{"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\/ro\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","title":{"rendered":"Sistemul de acces la fi\u0219iere la distan\u021b\u0103 Cage","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Scopul sistemului<\/h3>\n<p><\/p>\n<p>Sprijin\u0103 accesul la fi\u0219ierele de pe computerele din re\u021bea. Sistemul \u00abvirtual\u00bb suport\u0103 toate opera\u021biile de baz\u0103 cu fi\u0219iere (creare, \u0219tergere, citire, scriere etc.) prin schimbul de tranzac\u021bii (mesaje) pe protocolul TCP.<\/p>\n<p><\/p>\n<h3>Domenii de aplicare<\/h3>\n<p><\/p>\n<p>Func\u021bionalitatea sistemului este eficient\u0103 \u00een urm\u0103toarele cazuri:<\/p>\n<ul>\n<li> \u00een aplica\u021bii native pentru dispozitive mobile \u0219i embedded (smartphone-uri, sisteme de control integrat etc.) care necesit\u0103 acces rapid la fi\u0219iere pe servere la distan\u021b\u0103 \u00een condi\u021bii de conectivitate instabil\u0103 (\u00een cazul deconect\u0103rii temporare);<\/li>\n<li> \u00een SGBD-uri foarte solicitate, dac\u0103 prelucrarea cererilor se realizeaz\u0103 pe unele servere, iar stocarea datelor \u2013 pe altele;<\/li>\n<li> \u00een re\u021bele corporate distribuite pentru colectarea \u0219i prelucrarea informa\u021biilor, care necesit\u0103 o vitez\u0103 mare de schimb de date, rezervare \u0219i fiabilitate;<\/li>\n<li> \u00een sisteme complexe cu arhitectur\u0103 pe microservicii, unde \u00eent\u00e2rzierile \u00een schimbul de informa\u021bii \u00eentre module sunt de o importan\u021b\u0103 critic\u0103.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h3>Structura<\/h3>\n<p><\/p>\n<p>Sistemul Cage (exist\u0103 o implementare \u2013 versiune beta pe Python 3.7 \u00een OS Windows) include dou\u0103 p\u0103r\u021bi principale: <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2013 program de server de fi\u0219iere (pachet de func\u021bii) care ruleaz\u0103 pe computerele din re\u021bea, la care se necesit\u0103 acces la fi\u0219iere la distan\u021b\u0103;<\/li>\n<li> clas\u0103 <b>Cage<\/b> cu o bibliotec\u0103 de metode pentru software-ul client, care simplific\u0103 codificarea interac\u021biunii cu serverele.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Utilizarea sistemului pe partea clien\u021bilor<\/h3>\n<p><\/p>\n<p>Metodele clasei Cage \u00eenlocuiesc opera\u021biile obi\u0219nuite, \u00abrutinare\u00bb ale sistemului de fi\u0219iere: <i>crearea, deschiderea, \u00eenchiderea, \u0219tergerea <\/i>fi\u0219ierelor, precum \u0219i <i>citirea\/scrierea datelor \u00een format binar<\/i> (cu specificarea pozi\u021biei \u0219i dimensiunii datelor). Conceptual, aceste metode sunt apropiate de func\u021biile de fi\u0219iere din limbajul C, unde deschiderea\/\u00eenchiderea fi\u0219ierelor se face \u00abpe canale\u00bb de intrare-ie\u0219ire. <\/p>\n<p><\/p>\n<p>Cu alte cuvinte, programatorul lucreaz\u0103 nu cu metodele \u00abobiectelor fi\u0219ier\u00bb (clasa <b>_io<\/b> \u00een Python), ci cu metodele clasei Cage.<\/p>\n<p><\/p>\n<p>Atunci c\u00e2nd se creeaz\u0103 o instan\u021b\u0103 a obiectului Cage, se stabile\u0219te o conexiune ini\u021bial\u0103 cu serverul (sau cu mai multe servere), se trece prin autorizare cu Id-ul clientului \u0219i se prime\u0219te o confirmare cu num\u0103rul portului alocat pentru toate opera\u021biile cu fi\u0219iere. Atunci c\u00e2nd obiectul Cage este eliminat, acesta trimite serverului comanda de a \u00eentrerupe conexiunea \u0219i de a \u00eenchide fi\u0219ierele. Conexiunea poate fi ini\u021biat\u0103 \u0219i de c\u0103tre servere.<\/p>\n<p><\/p>\n<p>Sistemul \u00eembun\u0103t\u0103\u021be\u0219te viteza de citire\/scriere prin intermedierea fragmentelor frecvent utilizate ale fi\u0219ierelor la programele client \u00een cache (memoria tampon) RAM.<br \/>\nSoftware-ul client poate utiliza un num\u0103r nelimitat de obiecte Cage cu diverse set\u0103ri (capacitatea memoriei tampon, dimensiunea blocurilor la schimbul cu serverul etc.). <\/p>\n<p><\/p>\n<p>Un obiect Cage poate schimba date cu mai multe fi\u0219iere pe mai multe servere. Parametrii de conectare (IP-ul sau DNS-ul serverului, portul principal pentru autorizare, calea \u0219i numele fi\u0219ierului) sunt specifica\u021bi la crearea obiectului.<\/p>\n<p><\/p>\n<p>Av\u00e2nd \u00een vedere c\u0103 fiecare obiect Cage poate func\u021biona simultan cu mai multe fi\u0219iere, se folose\u0219te un spa\u021biu de memorie comun pentru bufferizare. Dimensiunea cache-ului \u2013 num\u0103rul de pagini \u0219i dimensiunea lor \u2013 este setat\u0103 dinamic la crearea obiectului Cage. De exemplu, un cache de 1 GB \u00eenseamn\u0103 1000 de pagini de 1 MB, sau 10.000 de pagini de 100 KB, sau 1 milion de pagini de 1 KB. Alegerea dimensiunii \u0219i num\u0103rului de pagini este o sarcin\u0103 specific\u0103 pentru fiecare caz de aplicare.<\/p>\n<p><\/p>\n<p>Se pot utiliza simultan mai multe obiecte Cage pentru a defini diverse set\u0103ri ale memoriei tampon \u00een func\u021bie de caracteristicile accesului la informa\u021bii \u00een diverse fi\u0219iere. Algoritmul de baz\u0103 aplicat este cea mai simpl\u0103 metod\u0103 de bufferizare: dup\u0103 epuizarea volumului de memorie specificat, noile pagini \u00eenlocuiesc paginile vechi \u00een conformitate cu principiul ie\u0219irii cu un num\u0103r minim de acces\u0103ri. Bufferizarea este deosebit de eficient\u0103 \u00een cazul accesului inegal (din punct de vedere statistic), mai \u00eent\u00e2i la diverse fi\u0219iere \u0219i, \u00een al doilea r\u00e2nd, la fragmentele fiec\u0103rui fi\u0219ier. <\/p>\n<p><\/p>\n<p>Clasa Cage suport\u0103 intrare\/ie\u0219ire nu doar prin adresele de date (specific\u00e2nd pozi\u021bia \u0219i lungimea array-ului, \u00ab\u00eenlocuind\u00bb opera\u021biile sistemului de fi\u0219iere), ci \u0219i la un nivel mai sc\u0103zut, \u00abfizic\u00bb \u2014 prin numerele paginilor din memoria tampon. <\/p>\n<p><\/p>\n<p>Pentru obiectele Cage este suportat\u0103 o func\u021bie original\u0103 <i>\u00abhibernare\u00bb<\/i> (\u00absuspend\u00bb) \u2013 acestea pot fi \u201ereamintite\u201d (de exemplu, \u00een cazul \u00eentreruperii conexiunii cu serverele sau la oprirea aplica\u021biei etc.) \u00eentr-un fi\u0219ier dump local pe partea clientului \u0219i restaurate rapid din acest fi\u0219ier (dup\u0103 reluarea conexiunii, la repornirea aplica\u021biei). Aceasta permite o reducere semnificativ\u0103 a traficului c\u00e2nd aplica\u021bia client este activat\u0103 din nou dup\u0103 o perioad\u0103 de \u201eoffline\u201d, deoarece fragmentele de fi\u0219iere frecvent utilizate vor fi deja \u00een cache.<\/p>\n<p><\/p>\n<p>Cage \u2014 este compus din aproximativ 3600 de linii de cod.<\/p>\n<p><\/p>\n<h3>Principiile construirii serverelor<\/h3>\n<p><\/p>\n<p>Serverele de fi\u0219iere Cageserver pot fi rulate cu un num\u0103r aleator de porturi, dintre care unul (\u201eprincipal\u201d) este folosit doar pentru autorizarea tuturor clien\u021bilor, iar celelalte \u2014 pentru schimbul de date. Programul serverului Cage necesit\u0103 doar Python. \u00cen paralel, computerul cu serverul de fi\u0219iere poate efectua orice alt\u0103 munc\u0103. <\/p>\n<p><\/p>\n<p>Serverul se porne\u0219te mai \u00eent\u00e2i ca o combina\u021bie de dou\u0103 procese principale:<\/p>\n<ol>\n<li><b>\u201eConexiuni\u201d<\/b> \u2013 proces pentru efectuarea opera\u021biunilor de stabilire a conexiunii cu clien\u021bii \u0219i a termin\u0103rii acesteia la ini\u021biativa serverului;<\/li>\n<li><b>\u201eOpera\u021bii\u201d<\/b> \u2013 proces pentru realizarea sarcinilor (opera\u021biunilor) clien\u021bilor \u00een manipularea fi\u0219ierelor, precum \u0219i pentru \u00eenchiderea sesiunilor de conexiune la comanda clien\u021bilor.<\/li>\n<\/ol>\n<p><\/p>\n<p>Ambele procese nu sunt sincronizate \u0219i sunt organizate ca bucle infinite de primire \u0219i trimitere a mesajelor pe baza coadelor multiproces, obiectelor proxy, blocajelor \u0219i socket-urilor.<br \/>\nProcesul \u201eConexiuni\u201d aloc\u0103 fiec\u0103rui client un port pentru trimiterea \u0219i primirea datelor. Num\u0103rul de porturi este specificat la pornirea serverului. Coeren\u021ba \u00eentre porturi \u0219i clien\u021bi este p\u0103strat\u0103 \u00een memoria proxy partajat\u0103 \u00eentre procese.<\/p>\n<p><\/p>\n<p>Procesul \u201eOpera\u021bii\u201d sus\u021bine separarea resurselor de fi\u0219iere, permi\u021b\u00e2nd mai multor clien\u021bi diferi\u021bi s\u0103 citeasc\u0103 date din acela\u0219i fi\u0219ier \u00een colaborare (<i>quasi-paralel<\/i>, deoarece accesul este gestionat prin blocaje) dac\u0103 acest lucru a fost permis la deschiderea sa ini\u021bial\u0103 de c\u0103tre \u201eprimul\u201d client. \n<\/p>\n<p>Prelucrarea comenzilor pentru crearea\/\u0219tergerea\/ceau deschiderea\/\u00eenchiderea fi\u0219ierelor <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/server\/dts-dronten\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">server<\/a> se realizeaz\u0103 \u00een cadrul procesului \u201eOpera\u021bii\u201d strict secven\u021bial folosind subsistemul de fi\u0219iere al sistemului de operare al serverului.<\/p>\n<p><\/p>\n<p>Pentru a accelera citirea \u0219i scrierea, aceste opera\u021biuni sunt efectuate \u00een fire (threads) generate de procesul \u201eOpera\u021bii\u201d. Num\u0103rul de fire este, de obicei, egal cu num\u0103rul de fi\u0219iere deschise. Sarcinile de citire\/scriere de la clien\u021bi sunt trimise \u00eentr-o coad\u0103 comun\u0103, iar primul fir disponibil preia sarcina de la \u00eenceputul acesteia. O logic\u0103 special\u0103 permite excluderea opera\u021biunilor de suprascriere a datelor \u00een memoria RAM a serverului.<\/p>\n<p><\/p>\n<p>Procesul \u201eOpera\u021bii\u201d monitorizeaz\u0103 activitatea clien\u021bilor \u0219i opre\u0219te serviciul acestora at\u00e2t la cererea lor, c\u00e2t \u0219i atunci c\u00e2nd se dep\u0103\u0219e\u0219te limita de timp de inactivitate.<\/p>\n<p><\/p>\n<p>Pentru a asigura fiabilitatea, Cageserver p\u0103streaz\u0103 jurnale ale tuturor tranzac\u021biilor. Un jurnal comun con\u021bine copii ale mesajelor de la clien\u021bi cu sarcini de creare\/deschidere\/renomire\/\u0219tergere a fi\u0219ierelor. Pentru fiecare fi\u0219ier de lucru se creeaz\u0103 un jurnal separat, \u00een care sunt \u00eenregistrate copiile mesajelor cu sarcini de citire \u0219i scriere a datelor \u00een acel fi\u0219ier de lucru, precum \u0219i matricile de date scrise (noi) \u0219i matricile de date care au fost distruse \u00een timpul suprascrierii (scrierii de noi date \u201epeste\u201d vechile). <\/p>\n<p><\/p>\n<p>Aceste jurnale ofer\u0103 posibilitatea at\u00e2t pentru recuperarea noilor modific\u0103ri din copiile de rezerv\u0103, c\u00e2t \u0219i pentru \u201erestaurarea\u201d con\u021binutului actual la un punct dorit \u00een trecut. <\/p>\n<p><\/p>\n<p>Cageserver con\u021bine aproximativ 3100 de linii de cod.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Sistemul de acces la fi\u0219iere la distan\u021b\u0103 Cage\" src=\"\/wp-content\/uploads\/2019\/08\/606d593347d73274b0c172dae34da0d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Pornirea programului de server de fi\u0219iere Cageserver<\/h3>\n<p><\/p>\n<p>La pornire, \u00een dialog trebuie s\u0103 fie definite:<br \/>\n \u2014 portul principal pentru autentificare;<br \/>\n \u2014 num\u0103rul de porturi pentru schimbul de tranzac\u021bii cu clien\u021bii autoriza\u021bi (de la 1 \u0219i mai mult, pool-ul de numere \u00eencepe cu urm\u0103torul dup\u0103 num\u0103rul portului principal).<\/p>\n<p><\/p>\n<h3>Utilizarea clasei Cage<\/h3>\n<p><\/p>\n<p><b>class<\/b> cage.<b>Cage<\/b>( <i>cage_name=\u00bb, pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file=\u00bb<\/i> )<\/p>\n<p><\/p>\n<p>Din aceast\u0103 clas\u0103 se creeaz\u0103 obiecte care interac\u021bioneaz\u0103 cu serverele de fi\u0219iere \u0219i con\u021bin memorie tampon.<\/p>\n<p><\/p>\n<p><b><u>Set\u0103ri<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 numele conven\u021bional al obiectului, care este folosit la identificarea clien\u021bilor pe partea serverului <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 dimensiunea unei pagini de memorie tampon (\u00een octe\u021bi)<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 num\u0103rul de pagini de memorie tampon<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 lungimea maxim\u0103 a \u0219irului de octe\u021bi \u00een opera\u021biile de scriere \u0219i citire<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 dic\u021bionar cu adresele utilizate <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/server\/\"   title=\"servere\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">servere<\/a>, unde cheia este numele conven\u021bional al serverului (id-ul serverului \u00een aplica\u021bie), iar valoarea este un \u0219ir cu adresa: \u201cip address:port\u201d sau \u201cDNS:port\u201d (asocierea numelui cu adresele reale este temporar\u0103, poate fi schimbat\u0103)<\/li>\n<li> <b>a\u0219tepta\u021bi<\/b>(<i>int<\/i>) \u2014 timpul de a\u0219teptare pentru un r\u0103spuns de la server la ob\u021binerea porturilor (\u00een sec.)<\/li>\n<li> <b>treazia<\/b>(<i>boolean<\/i>) \u2014 un flag care indic\u0103 metoda de creare a obiectului (<i>False<\/i> \u2014 dac\u0103 se creeaz\u0103 un nou obiect, <i>True<\/i> \u2014 dac\u0103 obiectul este creat dintr-unul anterior \u00ab\u00eenghe\u021bat\u00bb \u2014 aplic\u00e2nd opera\u021bia \u00abhibernare\u00bb, implicit False)<\/li>\n<li> <b>cache_file<\/b>(<i>str<\/i>) \u2014 numele fi\u0219ierului pentru hibernare<\/li>\n<\/ul>\n<p><\/p>\n<p><b><u>Metode<\/u><\/b><\/p>\n<p><\/p>\n<p>Cage.<b>file_create<\/b>( <i>server, path<\/i> ) \u2013 a crea un fi\u0219ier nou<\/p>\n<p><\/p>\n<p>Cage.<b>file_rename<\/b>( <i>server, path, new_name<\/i> ) \u2013 a redenumi fi\u0219ierul<\/p>\n<p><\/p>\n<p>Cage.<b>file_remove<\/b>( <i>server, path<\/i>) \u2013 a elimina fi\u0219ierul<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>server, path, mod <\/i>) \u2013 a deschide fi\u0219ierul<\/p>\n<p><\/p>\n<p>Returneaz\u0103 <i>fchannel<\/i> num\u0103rul canalului. Parametrul <i>mod<\/i> \u2014 este modul de deschidere a fi\u0219ierului: \u00abwm\u00bb \u2014 monopol (citire\/scriere), \u00abrs\u00bb \u2014 doar citire, \u0219i partajat doar pentru citire de c\u0103tre al\u021bi clien\u021bi, \u00abws\u00bb \u2014 citire\/scriere, \u0219i partajat doar pentru citire de c\u0103tre al\u021bi clien\u021bi. <\/p>\n<p><\/p>\n<p>Cage.<b>close<\/b> (<i>fchannel<\/i>) \u2013 a \u00eenchide fi\u0219ierul<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, begin, data <\/i>) \u2013 a scrie un \u0219ir de bytes \u00een fi\u0219ier<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, begin, len_data<\/i> ) \u2013 a citi un \u0219ir de bytes din fi\u0219ier<\/p>\n<p><\/p>\n<p>Cage.<b>put_pages <\/b>( <i>fchannel<\/i> ) \u2013 \u00ab\u00eempinge\u00bb din buffer pe server toate paginile canalului specificat care au fost modificate. Se folose\u0219te \u00een punctele algoritmului c\u00e2nd trebuie s\u0103 ne asigur\u0103m c\u0103 toate opera\u021biile pe canal sunt fizic salvate \u00een fi\u0219ierul de pe server.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 \u00ab\u00eempinge\u00bb din buffer pe server toate paginile tuturor canalelor pentru instan\u021ba clasei Cage, care au fost modificate. Se folose\u0219te c\u00e2nd trebuie s\u0103 ne asigur\u0103m c\u0103 toate opera\u021biile pe toate canalele sunt salvate pe server.<\/p>\n<p>Sursa: <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.2.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\/ro\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Sistem de acces la fi\u0219iere de la distan\u021b\u0103 Cage | ProHoster","description":"Scopul sistemului Este suportul accesului de la distan\u021b\u0103 la fi\u0219ierele de pe computerele din re\u021bea.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}