{"id":37019,"date":"2019-10-31T22:15:20","date_gmt":"2019-10-31T19:15:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sistema-udalennogo-fajlovogo-dostupa-cage\/"},"modified":"2019-10-31T22:15:20","modified_gmt":"2019-10-31T19:15:20","slug":"sistema-udalennogo-fajlovogo-dostupa-cage","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","title":{"rendered":"Sistema di accesso remoto ai file Cage","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Scopo del sistema<\/h3>\n<p><\/p>\n<p>Supporto per l'accesso remoto ai file sui computer in rete. Il sistema supporta \"virtualmente\" tutte le operazioni file fondamentali (creazione, eliminazione, lettura, scrittura, ecc.) attraverso lo scambio di transazioni (messaggi) utilizzando il protocollo TCP.<\/p>\n<p><\/p>\n<h3>Ambiti di applicazione<\/h3>\n<p><\/p>\n<p>Le funzionalit\u00e0 del sistema sono efficaci nei seguenti casi:<\/p>\n<ul>\n<li> nelle applicazioni native per dispositivi mobili e embedded (smartphone, sistemi di controllo a bordo, ecc.), che richiedono un accesso rapido ai file su server remoti in caso di possibili interruzioni temporanee della connessione (quando si va offline);<\/li>\n<li> in sistemi di database sovraccarichi, se l'elaborazione delle richieste avviene su server diversi dalla memorizzazione dei dati;<\/li>\n<li> in reti aziendali distribuite per la raccolta e l'elaborazione delle informazioni, che richiedono elevate velocit\u00e0 di scambio dei dati, riserva e affidabilit\u00e0;<\/li>\n<li> in sistemi complessi con architettura a microservizi, dove i ritardi nello scambio di informazioni tra i moduli sono di fondamentale importanza.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h3>Struttura<\/h3>\n<p><\/p>\n<p>Il sistema Cage (\u00e8 disponibile una realizzazione \u2014 versione beta su Python 3.7 per OS Windows) include due parti principali: <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2014 programma del file server (pacchetto di funzioni), che viene avviato sui computer della rete, ai cui file \u00e8 necessario l'accesso remoto;<\/li>\n<li> classe <b>Cage<\/b> con una libreria di metodi per software client, che semplifica il codice per l'interazione con i server.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Utilizzo del sistema lato client<\/h3>\n<p><\/p>\n<p>I metodi della classe Cage sostituiscono le normali operazioni \"routine\" del file system: <i>creazione, apertura, chiusura, eliminazione <\/i>di file, cos\u00ec come <i>lettura\/scrittura di dati in formato binario<\/i> (specificando la posizione e la dimensione dei dati). Concettualmente, questi metodi sono simili alle funzioni file del linguaggio C, dove l'apertura\/chiusura dei file avviene \"sui canali\" di input\/output. <\/p>\n<p><\/p>\n<p>In altre parole, il programmatore non lavora con i metodi degli oggetti \"file\" (classe <b>_io<\/b> in Python), ma con i metodi della classe Cage.<\/p>\n<p><\/p>\n<p>Quando viene creato un'istanza dell'oggetto Cage, essa stabilisce un collegamento iniziale con il server (o pi\u00f9 server), passa l'autenticazione tramite l'ID del cliente e riceve conferma con il numero della porta assegnata per tutte le operazioni sui file. Alla cancellazione dell'oggetto Cage, viene inviata al server un'istruzione per interrompere la connessione e chiudere i file. Anche i server possono iniziare l'interruzione della connessione.<\/p>\n<p><\/p>\n<p>Il sistema aumenta le prestazioni di lettura\/scrittura basandosi sulla memorizzazione nella cache di frammenti di file frequentemente utilizzati nei programmi client nella memoria RAM (buffer).<br \/>\nIl software client pu\u00f2 utilizzare qualsiasi numero di oggetti Cage con diverse impostazioni (dimensione della memoria buffer, dimensione dei blocchi durante lo scambio con il server, ecc.). <\/p>\n<p><\/p>\n<p>Un oggetto Cage pu\u00f2 scambiare dati con pi\u00f9 file su diversi server. I parametri di connessione (indirizzo IP o DNS del server, porta principale per l'autenticazione, percorso e nome del file) sono impostati al momento della creazione dell'oggetto.<\/p>\n<p><\/p>\n<p>Poich\u00e9 ogni oggetto Cage pu\u00f2 lavorare contemporaneamente con numerosi file, si utilizza uno spazio di memoria condiviso per la memorizzazione nella cache. La dimensione della cache \u2013 il numero di pagine e la loro dimensione \u2013 viene definita dinamicamente al momento della creazione dell'oggetto Cage. Ad esempio, una cache di 1 GB corrisponde a 1000 pagine da 1 MB, oppure 10.000 pagine da 100 KB, oppure 1 milione di pagine da 1 KB. La scelta della dimensione e del numero di pagine \u00e8 una questione specifica per ogni caso applicativo.<\/p>\n<p><\/p>\n<p>\u00c8 possibile utilizzare simultaneamente pi\u00f9 oggetti Cage per definire diverse impostazioni della memoria buffer in base alle caratteristiche di accesso alle informazioni in vari file. Viene applicato un algoritmo di memorizzazione nella cache di base: dopo l'esaurimento della memoria assegnata, nuove pagine sostituiscono le vecchie secondo il principio di rimozione con il numero minimo di accessi. La memorizzazione nella cache \u00e8 particolarmente efficace in caso di accesso congiunto non uniforme (in senso statistico), sia a file diversi, sia a frammenti di ciascun file. <\/p>\n<p><\/p>\n<p>La classe Cage supporta l'input\/output non solo per indirizzi dati (indicando la posizione e la lunghezza dell'array, 'sostituendo' le operazioni del file system), ma anche a un livello pi\u00f9 basso, 'fisico' \u2013 per numeri di pagina nella memoria buffer. <\/p>\n<p><\/p>\n<p>Per gli oggetti Cage \u00e8 supportata la funzione originale <i>\u00abibernazione\u00bb<\/i> (\u00absogno\u00bb) \u2013 possono essere \u00abcompressi\u00bb (ad esempio, in caso di interruzione della connessione ai server, o quando l'applicazione viene arrestata, ecc.) in un file di dump locale sul client e rapidamente ripristinati da questo file (dopo il ripristino della connessione, al riavvio dell'applicazione). Questo consente una significativa riduzione del traffico quando viene riattivata l'applicazione client dopo un temporaneo allontanamento \u00aboffline\u00bb, poich\u00e9 frammenti di file frequentemente utilizzati saranno gi\u00e0 presenti nella cache.<\/p>\n<p><\/p>\n<p>Cage \u2014 \u00e8 di circa 3600 righe di codice.<\/p>\n<p><\/p>\n<h3>Principi di costruzione dei server<\/h3>\n<p><\/p>\n<p>I file-server Cageserver possono essere avviati con un numero qualsiasi di porte, una delle quali (\u00abprincipale\u00bb) \u00e8 utilizzata solo per l'autenticazione di tutti i client, le altre \u2014 per lo scambio di dati. Per il programma del server Cage \u00e8 richiesto solo Python. Parallelamente, il computer con il file-server pu\u00f2 eseguire qualsiasi altro lavoro. <\/p>\n<p><\/p>\n<p>Il server viene avviato inizialmente come un insieme di due processi principali:<\/p>\n<ol>\n<li><b>\u00abConnessioni\u00bb<\/b> \u2013 processo per eseguire operazioni di instaurazione e interruzione della connessione con i client a iniziativa del server;<\/li>\n<li><b>\u00abOperazioni\u00bb<\/b> \u2013 processo per eseguire compiti (operazioni) dei client relativi ai file, oltre a chiudere le sessioni di connessione su comandi dei client.<\/li>\n<\/ol>\n<p><\/p>\n<p>Entrambi i processi non sono sincronizzati e organizzati come cicli infiniti di ricezione e invio di messaggi sulla base di code multiprocessuali, oggetti proxy, lock e socket.<br \/>\nIl processo \u00abConnessioni\u00bb assegna a ogni client una porta per la trasmissione di dati. Il numero di porte \u00e8 definito all'avvio del server. La corrispondenza tra porte e client \u00e8 memorizzata in una memoria proxy condivisa tra i processi.<\/p>\n<p><\/p>\n<p>Il processo \u00abOperazioni\u00bb supporta la condivisione delle risorse file, consentendo a pi\u00f9 client diversi di leggere insieme (<i>quasi in parallelo<\/i>, poich\u00e9 l'accesso \u00e8 gestito tramite lock) dati da un file, se questo \u00e8 stato autorizzato al momento della sua apertura iniziale da parte del \u00abprimo\u00bb client. \n<\/p>\n<p>L'elaborazione dei comandi per la creazione\/rimozione\/apertura\/chiusura di file su <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/server\/dts-dronten\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">server<\/a> \u00e8 eseguita all'interno del processo \u00abOperazioni\u00bb in modo strettamente sequenziale utilizzando il sottosistema file del server OS.<\/p>\n<p><\/p>\n<p>Per accelerare la lettura\/scrittura, queste operazioni vengono eseguite in thread generati dal processo \"Operazioni\". Il numero di thread \u00e8 generalmente pari al numero di file aperti. I compiti di lettura\/scrittura dai clienti vengono inviati a una coda comune e il primo thread disponibile preleva il compito dalla testa della coda. Una logica speciale consente di escludere le operazioni di riscrittura dei dati nella memoria operativa del server.<\/p>\n<p><\/p>\n<p>Il processo \"Operazioni\" monitora l'attivit\u00e0 dei clienti e interrompe il loro servizio sia su loro comando che in caso di superamento del timeout di inattivit\u00e0.<\/p>\n<p><\/p>\n<p>Per garantire l'affidabilit\u00e0, il Cageserver tiene traccia di tutti i registri delle transazioni. Un unico registro generale contiene copie dei messaggi dai clienti con compiti di creazione\/apertura\/rinominazione\/cancellazione di file. Per ciascun file di lavoro viene creato un registro separato, in cui sono registrate le copie dei messaggi con compiti di lettura e scrittura dei dati in quel file di lavoro, nonch\u00e9 gli array di dati scritti (nuovi) e gli array di dati che sono stati distrutti durante la riscrittura (scrittura di nuovi dati \"sopra\" ai vecchi). <\/p>\n<p><\/p>\n<p>Questi registri permettono sia il recupero delle nuove modifiche nei backup, sia il \"rollback\" del contenuto attuale al momento desiderato del passato. <\/p>\n<p><\/p>\n<p>Cageserver comprende circa 3100 righe di codice.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Sistema di accesso remoto ai file Cage\" src=\"\/wp-content\/uploads\/2019\/08\/606d593347d73274b0c172dae34da0d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Avvio del programma del file server Cageserver<\/h3>\n<p><\/p>\n<p>All'avvio, nella finestra di dialogo \u00e8 necessario definire:<br \/>\n \u2014 la porta principale per l'autenticazione;<br \/>\n \u2014 il numero di porte per lo scambio di transazioni con i clienti autorizzati (da 1 in su, il pool dei numeri inizia dal successivo numero della porta principale).<\/p>\n<p><\/p>\n<h3>Utilizzo della classe Cage<\/h3>\n<p><\/p>\n<p><b>class<\/b> cage.<b>Cage<\/b>( <i>cage_name=&#187;&#187;, pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file=&#187;&#187;<\/i> )<\/p>\n<p><\/p>\n<p>Da questa classe vengono creati oggetti che interagiscono con i file server e contengono memoria buffer.<\/p>\n<p><\/p>\n<p><b><u>Parametri<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 nome convenzionale dell'oggetto, utilizzato per identificare i clienti dal lato del server <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 dimensione di una pagina di memoria buffer (in byte)<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 numero di pagine di memoria buffer<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 lunghezza massima della stringa in byte nelle operazioni di scrittura e lettura<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 dizionario con gli indirizzi utilizzati <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/server\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">server<\/a>, dove la chiave \u00e8 il nome condizionale del server (id del server all'interno dell'applicazione), e il valore \u00e8 una stringa con l'indirizzo: \u201cip address:port\u201d o \u201cDNS:port\u201d (la corrispondenza tra nomi e indirizzi reali \u00e8 temporanea, pu\u00f2 essere cambiata)<\/li>\n<li> <b>wait<\/b>(<i>int<\/i>) \u2014 tempo di attesa per la risposta dal server durante la ricezione delle porte (in sec.)<\/li>\n<li> <b>sveglia<\/b>(<i>campo<\/i>) \u2014 flag del metodo di creazione dell'oggetto (<i>False<\/i> \u2014 se viene creato un nuovo oggetto, <i>Vero<\/i> \u2014 se l'oggetto viene creato da un precedente 'sospeso' \u2014 utilizzando l'operazione di 'ibernazione', di default Falso)<\/li>\n<li> <b>cache_file<\/b>(<i>str<\/i>) \u2014 nome del file per l'ibernazione<\/li>\n<\/ul>\n<p><\/p>\n<p><b><u>Metodi<\/u><\/b><\/p>\n<p><\/p>\n<p>Cage.<b>file_create<\/b>( <i>server, path<\/i> ) \u2013 creare un nuovo file<\/p>\n<p><\/p>\n<p>Cage.<b>file_rename<\/b>( <i>server, path, new_name<\/i> ) \u2013 rinominare il file<\/p>\n<p><\/p>\n<p>Cage.<b>file_remove<\/b>( <i>server, path<\/i>) \u2013 rimuovere il file<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>server, path, mod <\/i>) \u2013 aprire il file<\/p>\n<p><\/p>\n<p>Restituisce <i>fchannel<\/i> numero del canale. Il parametro <i>mod<\/i> \u2014 \u00e8 la modalit\u00e0 di apertura del file: 'wm' \u2014 monopolista (lettura\/scrittura), 'rs' \u2014 solo lettura, e condiviso solo per la lettura da altri client, 'ws' \u2014 lettura\/scrittura, e condiviso solo per la lettura da altri client. <\/p>\n<p><\/p>\n<p>Cage.<b>close<\/b> (<i>fchannel<\/i>) \u2013 chiudere il file<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, begin, data <\/i>) \u2013 scrivere una stringa di byte nel file<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, begin, len_data<\/i> ) \u2013 leggere una stringa di byte dal file<\/p>\n<p><\/p>\n<p>Cage.<b>put_pages <\/b>( <i>fchannel<\/i> ) \u2013 'spinge' dal buffer al server tutte le pagine del canale specificato, che sono state modificate. Utilizzato nei punti dell'algoritmo quando \u00e8 necessario essere certi che tutte le operazioni sul canale siano fisicamente salvate nel file sul server.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 'spinge' dal buffer al server tutte le pagine di tutti i canali per l'istanza della classe Cage, che sono state modificate. Utilizzato quando \u00e8 necessario essere certi che tutte le operazioni su tutti i canali siano salvate sul server.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/463085\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438. \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u00bb \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0434\u0440.) \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u043c\u0435\u043d\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c\u0438 (\u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u043c\u0438) \u043f\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0443 \u0422\u0421\u0420. \u041e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0424\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u0435\u043d \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445: \u0432 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0438 embedded \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b, \u0431\u043e\u0440\u0442\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0442.\u043f.), \u0442\u0440\u0435\u0431\u0443\u044e\u0449\u0438\u0445 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:15:20+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Sistema di accesso remoto ai file Cage | ProHoster","description":"Funzione del sistema Supporto all'accesso remoto ai file sui computer in rete.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 Cage | ProHoster","og:description":"\u041d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0430\u043c \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u0445 \u0432 \u0441\u0435\u0442\u0438.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:15:20+00:00","article:modified_time":"2019-10-31T19:15:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37019","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 21:52:49","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:34:26","updated":"2026-02-09 21:52:49","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}