{"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>Supporta l'accesso remoto ai file sui computer della rete. Il sistema gestisce \"virtualmente\" tutte le principali operazioni sui file (creazione, eliminazione, lettura, scrittura e altro) tramite lo scambio di transazioni (messaggi) tramite 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> in applicazioni native per dispositivi mobili e embedded (smartphone, sistemi di controllo a bordo, ecc.) che richiedono un accesso rapido ai file sui server remoti in caso di potenziali interruzioni temporanee della connessione (uscita offline);<\/li>\n<li> in database relazionali ad alto carico, dove l'elaborazione delle richieste avviene su server diversi rispetto allo storage dei dati;<\/li>\n<li> in reti aziendali distribuite per la raccolta e l'elaborazione delle informazioni, che richiedono elevata velocit\u00e0 di scambio dati, backup 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 importanza critica.<\/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 un'implementazione \u2014 versione beta su Python 3.7 su Windows) comprende due parti principali: <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2014 un programma file-server (pacchetto di funzionalit\u00e0) che viene eseguito sui computer in rete, ai quali \u00e8 necessario accedere ai file da remoto;<\/li>\n<li> classe <b>Cage<\/b> con una libreria di metodi per il software client, che semplifica la codifica dell'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 'routin\u00e8' del filesystem: <i>creazione, apertura, chiusura, eliminazione <\/i>dei file, nonch\u00e9 <i>lettura\/scrittura di dati in formato binario<\/i> (specificando posizione e dimensione dei dati). Concettualmente, questi metodi sono simili alle funzioni di file del linguaggio C, dove l'apertura\/chiusura dei file avviene 'su 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 si crea un'istanza dell'oggetto Cage, stabilisce una connessione iniziale con il server (o con pi\u00f9 server), autentica l'ID del cliente e riceve una conferma con il numero della porta dedicata per tutte le operazioni sui file. Quando l'oggetto Cage viene eliminato, invia al server un comando per interrompere la connessione e chiudere i file. La disconnessione pu\u00f2 essere iniziata anche dai server stessi.<\/p>\n<p><\/p>\n<p>Il sistema migliora le prestazioni di lettura\/scrittura basandosi sulla memorizzazione nella cache dei frammenti di file pi\u00f9 utilizzati dalle applicazioni client nella memoria RAM.<br \/>\nIl software client pu\u00f2 utilizzare un numero qualsiasi di oggetti Cage con diverse configurazioni (dimensione della memoria cache, 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 pi\u00f9 server. I parametri per la 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 operare contemporaneamente con pi\u00f9 file, viene utilizzato uno spazio di memoria condiviso per la memorizzazione nella cache. Le dimensioni della cache \u2013 il numero di pagine e la loro dimensione \u2013 vengono impostate 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 rappresenta una questione specifica per ogni caso applicativo.<\/p>\n<p><\/p>\n<p>\u00c8 possibile utilizzare pi\u00f9 oggetti Cage contemporaneamente per definire diverse impostazioni di memoria tampone in base alle peculiarit\u00e0 di accesso alle informazioni in diversi file. Come base viene applicato il pi\u00f9 semplice algoritmo di memorizzazione nella cache: dopo l'esaurimento della memoria assegnata, le nuove pagine sostituiscono le vecchie secondo il principio dell'uscita con il minor numero di accessi. La buffering \u00e8 particolarmente efficace in presenza di accesso non uniforme (in senso statistico), sia a diversi file che a frammenti di ciascun file. <\/p>\n<p><\/p>\n<p>La classe Cage supporta l'input\/output non solo per indirizzi di dati (specificando la posizione e la lunghezza dell'array, \"sostituendo\" le operazioni del file system), ma anche a un livello pi\u00f9 basso, \"fisico\" \u2014 tramite numeri di pagina nella memoria buffer. <\/p>\n<p><\/p>\n<p>Per gli oggetti Cage \u00e8 supportata la funzione originale <i>\"ibernazione\"<\/i> (\"sonno\") \u2014 possono essere \"compattati\" (ad esempio, in caso di disconnessione dai server, o durante l'arresto dell'applicazione, ecc.) in un file di dump locale sul lato client e rapidamente ripristinati da questo file (dopo il ripristino della connessione, al riavvio dell'applicazione). Questo consente una significativa riduzione del traffico al riavvio del programma client dopo un'interruzione temporanea \"offline\", poich\u00e9 i frammenti di file frequentemente utilizzati saranno gi\u00e0 presenti nella cache.<\/p>\n<p><\/p>\n<p>Cage \u00e8 composto da 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 eseguiti con un numero arbitrario di porte, una delle quali (\u00abprincipale\u00bb) \u00e8 utilizzata solo per l'autenticazione di tutti i clienti, mentre le altre sono dedicate al trasferimento dei dati. Per il funzionamento del server Cage \u00e8 richiesto solamente Python. Inoltre, il computer con il file server pu\u00f2 eseguire qualsiasi altro lavoro. <\/p>\n<p><\/p>\n<p>Il server viene avviato innanzitutto come una combinazione di due processi principali:<\/p>\n<ol>\n<li><b>\u00abConnessioni\u00bb<\/b> \u2013 processo per eseguire operazioni di stabilimento e terminazione di collegamenti con i clienti, su iniziativa del server;<\/li>\n<li><b>\u00abOperazioni\u00bb<\/b> \u2013 processo per eseguire i compiti (operazioni) dei clienti relativi alla gestione dei file, e per chiudere le sessioni di comunicazione su comando dei clienti.<\/li>\n<\/ol>\n<p><\/p>\n<p>Entrambi i processi non sono sincronizzati e sono organizzati come cicli infiniti di ricezione e invio di messaggi basati su code di multiprocessi, oggetti proxy, lock e socket.<br \/>\nIl processo \u00abConnessioni\u00bb assegna a ciascun cliente una porta per la trasmissione dei dati. Il numero di porte \u00e8 definito all'avvio del server. La corrispondenza tra porte e clienti \u00e8 memorizzata nella memoria condivisa tra processi.<\/p>\n<p><\/p>\n<p>Il processo \"Operazioni\" supporta la divisione delle risorse dei file, consentendo a diversi clienti di accedere contemporaneamente (<i>quasi in parallelo<\/i>, poich\u00e9 l'accesso \u00e8 gestito da lock) ai dati di un file, se tale operazione \u00e8 stata autorizzata al momento della sua apertura iniziale da parte del \"primo\" cliente. \n<\/p>\n<p>L'elaborazione dei comandi per la creazione\/delezione\/apertura\/chiusura dei file <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> avviene nel processo \"Operazioni\" 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 dei clienti vengono inviati a una coda comune, e il primo thread disponibile preleva il compito dalla testa della coda. Una logica speciale permette di escludere le operazioni di sovrascrittura 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, Cageserver tiene traccia di tutti i registri delle transazioni. Un registro comune contiene copie dei messaggi dai clienti con richieste per creare, aprire, rinominare o eliminare file. Per ogni file di lavoro, viene creato un registro separato in cui vengono registrate copie dei messaggi con richieste di lettura e scrittura dei dati in quel file di lavoro, insieme agli array dei dati scritti (nuovi) e agli array dei dati che sono stati distrutti durante la riscrittura (scrittura di nuovi dati sopra i vecchi). <\/p>\n<p><\/p>\n<p>Questi registri offrono la possibilit\u00e0 sia di ripristinare le nuove modifiche nei backup, sia di \u00abripristinare\u00bb il contenuto attuale a un momento desiderato del passato. <\/p>\n<p><\/p>\n<p>Cageserver \u00e8 composto da 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 file-server Cageserver<\/h3>\n<p><\/p>\n<p>Durante l'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 (dalla prima in poi, il pool dei numeri inizia dal numero successivo a quello 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 lato 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 nella memoria buffer<\/li>\n<li> <b>maxstrlen<\/b>(<i>-int<\/i>) \u2014 lunghezza massima della stringa in byte nelle operazioni di lettura e scrittura<\/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 convenzionale 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 (correlazione tra nomi e indirizzi reali \u2014 temporanea, modificabile)<\/li>\n<li> <b>wait<\/b>(<i>-int<\/i>) \u2014 tempo di attesa per la risposta dal server durante l'ottenimento delle porte (in sec.)<\/li>\n<li> <b>awake<\/b>(<i>booleano<\/i>) \u2014 flag sul metodo di creazione dell'oggetto (<i>Falso<\/i> \u2014 se viene creato un nuovo oggetto, <i>True<\/i> \u2014 se l'oggetto viene creato da un precedente \u00absospeso\u00bb \u2014 tramite l'operazione di \u00abibernazione\u00bb, per impostazione predefinita False)<\/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>I 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: \u00abwm\u00bb \u2014 monopolistica (read\/write), \u00abrs\u00bb \u2014 solo lettura, e condivisa solo per lettura da altri client, \u00abws\u00bb \u2014 read\/write, e condivisa solo per 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, inizio, dati <\/i>) \u2013 scrivere una stringa di byte nel file<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, inizio, 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 \u00abespelle\u00bb dal buffer sul server tutte le pagine del canale specificato che sono state modificate. Viene utilizzato nei punti dell'algoritmo in cui \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 \u00abespelle\u00bb dal buffer sul server tutte le pagine di tutti i canali per l'istanza della classe Cage che sono state modificate. Viene 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 4.9.10 - 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. \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\" \/>\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) 4.9.10\" \/>\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. \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\" \/>\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":"Scopo del sistema Supporto all'accesso remoto ai file sui computer nella rete. Il sistema 'virtualmente' supporta tutte le operazioni di file principali (creazione, eliminazione, lettura, scrittura, ecc.) attraverso lo scambio di transazioni (messaggi) via protocollo TCP. Ambiti di applicazione La funzionalit\u00e0 del sistema \u00e8 efficace nei seguenti casi: in applicazioni native per dispositivi mobili e embedded (smartphone, sistemi di gestione a bordo, ecc.), che richiedono rapidit\u00e0.","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. \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","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"},"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}]}}