{"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\/sk\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","title":{"rendered":"Syst\u00e9m vzd\u00e1len\u00e9ho p\u0159\u00edstupu k soubor\u016fm Cage","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>\u00da\u010del syst\u00e9mu<\/h3>\n<p><\/p>\n<p>Podpora vzd\u00e1len\u00e9ho p\u0159\u00edstupu k soubor\u016fm na po\u010d\u00edta\u010d\u00edch v s\u00edti. Syst\u00e9m \"virtu\u00e1ln\u011b\" podporuje v\u0161echny z\u00e1kladn\u00ed souborov\u00e9 operace (vytv\u00e1\u0159en\u00ed, odstra\u0148ov\u00e1n\u00ed, \u010dten\u00ed, z\u00e1pis a dal\u0161\u00ed) prost\u0159ednictv\u00edm v\u00fdm\u011bny transakc\u00ed (zpr\u00e1v) podle protokolu TCP.<\/p>\n<p><\/p>\n<h3>Oblasti pou\u017eit\u00ed<\/h3>\n<p><\/p>\n<p>Funkcionalita syst\u00e9mu je efektivn\u00ed v n\u00e1sleduj\u00edc\u00edch p\u0159\u00edpadech:<\/p>\n<ul>\n<li> v nativn\u00edch aplikac\u00edch pro mobiln\u00ed a embedded za\u0159\u00edzen\u00ed (smartphony, palubn\u00ed \u0159\u00eddic\u00ed syst\u00e9my atd.), kter\u00e9 vy\u017eaduj\u00ed rychl\u00fd p\u0159\u00edstup k soubor\u016fm na vzd\u00e1len\u00fdch serverech za podm\u00ednek pravd\u011bpodobn\u00fdch do\u010dasn\u00fdch v\u00fdpadk\u016f spojen\u00ed (p\u0159i odpojen\u00ed);<\/li>\n<li> v zat\u00ed\u017een\u00fdch datab\u00e1zov\u00fdch syst\u00e9mech, pokud je zpracov\u00e1n\u00ed dotaz\u016f prov\u00e1d\u011bno na jedn\u011bch serverech, zat\u00edmco ukl\u00e1d\u00e1n\u00ed dat \u2013 na jin\u00fdch;<\/li>\n<li> ve distribuovan\u00fdch firemn\u00edch s\u00edt\u00edch sb\u011bru a zpracov\u00e1n\u00ed informac\u00ed, kter\u00e9 vy\u017eaduj\u00ed vysokou rychlost v\u00fdm\u011bny dat, z\u00e1lohov\u00e1n\u00ed a spolehlivost;<\/li>\n<li> v komplikovan\u00fdch syst\u00e9mech s microservices architekturou, kde zpo\u017ed\u011bn\u00ed v v\u00fdm\u011bn\u011b informac\u00ed mezi moduly m\u00e1 z\u00e1sadn\u00ed v\u00fdznam.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h3>Struktura<\/h3>\n<p><\/p>\n<p>Syst\u00e9m Cage (je k dispozici implementace \u2013 beta verze na Python 3.7 v OS Windows) zahrnuje dv\u011b hlavn\u00ed \u010d\u00e1sti: <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2013 program souborov\u00e9ho serveru (bal\u00ed\u010dek funkc\u00ed), kter\u00fd je spu\u0161t\u011bn na po\u010d\u00edta\u010d\u00edch v s\u00edti, k soubor\u016fm, k nim\u017e je pot\u0159ebn\u00fd vzd\u00e1len\u00fd p\u0159\u00edstup;<\/li>\n<li> t\u0159\u00edda <b>Cage<\/b> s knihovnou metod pro klientsk\u00e9 softwary, kter\u00e1 usnad\u0148uje k\u00f3dov\u00e1n\u00ed interakce se servery.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Pou\u017eit\u00ed syst\u00e9mu na stran\u011b klient\u016f<\/h3>\n<p><\/p>\n<p>Metody t\u0159\u00eddy Cage nahrazuj\u00ed b\u011b\u017en\u00e9, \"rutinn\u00ed\" operace souborov\u00e9ho syst\u00e9mu: <i>vytv\u00e1\u0159en\u00ed, otev\u00edr\u00e1n\u00ed, zav\u00edr\u00e1n\u00ed, odstra\u0148ov\u00e1n\u00ed <\/i>soubor\u016f, jako\u017e i <i>\u010dten\u00ed\/z\u00e1pis dat v bin\u00e1rn\u00edm form\u00e1tu<\/i> (s uveden\u00edm pozice a velikosti dat). Konceptu\u00e1ln\u011b jsou tyto metody p\u0159ibl\u00ed\u017eeny k souborov\u00fdm funkc\u00edm jazyka C, kde se otev\u00edr\u00e1n\u00ed\/zav\u00edr\u00e1n\u00ed soubor\u016f prov\u00e1d\u00ed \"na kan\u00e1lech\" vstupu a v\u00fdstupu. <\/p>\n<p><\/p>\n<p>Jin\u00fdmi slovy, program\u00e1tor pracuje ne s metodami \"souborov\u00fdch\" objekt\u016f (t\u0159\u00edda <b>_io<\/b> v Pythonu), ale s metodami t\u0159\u00eddy Cage.<\/p>\n<p><\/p>\n<p>Pri vytv\u00e1ran\u00ed in\u0161tancie objektu Cage sa nadvia\u017ee po\u010diato\u010dn\u00e9 spojenie so serverom (alebo viacer\u00fdmi servermi), prejde autoriz\u00e1ciou pod\u013ea ID klienta a z\u00edska potvrdenie s \u010d\u00edslom pridelen\u00e9ho portu pre vykon\u00e1vanie v\u0161etk\u00fdch s\u00faborov\u00fdch oper\u00e1ci\u00ed. Pri odstra\u0148ovan\u00ed objektu Cage sa serveru vyd\u00e1va pr\u00edkaz na ukon\u010denie spojenia a zatvorenie s\u00faborov. Ukon\u010denie spojenia m\u00f4\u017eu iniciova\u0165 aj samotn\u00e9 servery.<\/p>\n<p><\/p>\n<p>Syst\u00e9m zvy\u0161uje v\u00fdkon \u010d\u00edtania\/z\u00e1pisu na z\u00e1klade vyrovn\u00e1vacej pam\u00e4te \u010dasto pou\u017e\u00edvan\u00fdch fragmentov s\u00faborov v klientsk\u00fdch programoch v cache (vyrovn\u00e1vacej pam\u00e4ti) opera\u010dnej pam\u00e4te.<br \/>\nKlientsk\u00fd softv\u00e9r m\u00f4\u017ee pou\u017e\u00edva\u0165 ak\u00fdko\u013evek po\u010det objektov Cage s r\u00f4znymi nastaveniami (objem vyrovn\u00e1vacej pam\u00e4te, ve\u013ekos\u0165 blokov pri v\u00fdmene so serverom at\u010f.). <\/p>\n<p><\/p>\n<p>Jeden objekt Cage m\u00f4\u017ee vymie\u0148a\u0165 d\u00e1ta s viacer\u00fdmi s\u00fabormi na viacer\u00fdch serveroch. Parametre pre spojenie (IP adresa alebo DNS server, prim\u00e1rny port pre autoriz\u00e1ciu, cesta a n\u00e1zov s\u00faboru) s\u00fa nastaven\u00e9 pri vytv\u00e1ran\u00ed objektu.<\/p>\n<p><\/p>\n<p>Ke\u010f\u017ee ka\u017ed\u00fd objekt Cage m\u00f4\u017ee s\u00fa\u010dasne pracova\u0165 s mnoh\u00fdmi s\u00fabormi, pre vyrovn\u00e1vaciu pam\u00e4\u0165 sa pou\u017e\u00edva spolo\u010dn\u00fd priestor pam\u00e4te. Ve\u013ekos\u0165 cache \u2013 po\u010det str\u00e1n a ich ve\u013ekos\u0165, sa ur\u010duje dynamicky pri vytv\u00e1ran\u00ed objektu Cage. Napr\u00edklad, cache s ve\u013ekos\u0165ou 1 GB je 1000 str\u00e1n po 1 MB alebo 10 000 str\u00e1n po 100 KB alebo 1 mili\u00f3n str\u00e1n po 1 KB. V\u00fdber ve\u013ekosti a po\u010dtu str\u00e1n je konkr\u00e9tnou \u00falohou pre ka\u017ed\u00fd aplika\u010dn\u00fd pr\u00edpad.<\/p>\n<p><\/p>\n<p>M\u00f4\u017ee sa s\u00fa\u010dasne pou\u017e\u00edva\u0165 viacero objektov Cage, aby sa ur\u010dili r\u00f4zne nastavenia vyrovn\u00e1vacej pam\u00e4te v z\u00e1vislosti od charakterist\u00edk pr\u00edstupu k inform\u00e1ci\u00e1m v r\u00f4znych s\u00faboroch. Ako z\u00e1kladn\u00fd algoritmus sa aplikuje najjednoduch\u0161\u00ed algoritmus vyrovn\u00e1vacej pam\u00e4te: po vy\u010derpan\u00ed zadan\u00e9ho objemu pam\u00e4te, nov\u00e9 str\u00e1nky nahr\u00e1dzaj\u00fa star\u00e9 na princ\u00edpe vyra\u010fovania s minim\u00e1lnym po\u010dtom pr\u00edstupov. Vyrovn\u00e1vanie pam\u00e4te je obzvl\u00e1\u0161\u0165 efekt\u00edvne v pr\u00edpade nerovnomern\u00e9ho (v \u0161tatistickom zmysle) spolo\u010dne pr\u00edstupu, jednak k r\u00f4znym s\u00faborom, a jednak k fragmentom ka\u017ed\u00e9ho s\u00faboru. <\/p>\n<p><\/p>\n<p>Trieda Cage podporuje vstup\/v\u00fdstup nielen pod\u013ea adries d\u00e1t (s ur\u010den\u00edm poz\u00edcie a d\u013a\u017eky po\u013ea, \u201enahr\u00e1dzaj\u00fac\u201c oper\u00e1cie s\u00faborov\u00e9ho syst\u00e9mu), ale aj na ni\u017e\u0161ej, \u201efyzickej\u201c \u00farovni \u2013 pod\u013ea \u010d\u00edsel str\u00e1n v vyrovn\u00e1vacej pam\u00e4ti. <\/p>\n<p><\/p>\n<p>Pre objekty Cage sa podporuje origin\u00e1lna funkcia <i>\u201ehibern\u00e1cie\u201c<\/i> (\u00absuspend\u00bb) \u2013 it can be \u00abcollapsed\u00bb (for example, in case of connection loss with the servers, or when stopping the application, etc.) to a local dump file on the client side and quickly restored from this file (after reconnecting, when re-launching the application). This allows for significant traffic reduction when reactivating the client program after a temporary \u00aboffline\u00bb state, as frequently used file fragments will already be in cache.<\/p>\n<p><\/p>\n<p>Cage is about 3600 lines of code.<\/p>\n<p><\/p>\n<h3>Principles of server construction<\/h3>\n<p><\/p>\n<p>Cageserver file servers can be launched with any number of ports, one of which (the \u00abmain\u00bb one) is used only for authorizing all clients, while the others are for data exchange. The Cage server program requires only Python. Simultaneously, the computer with the file server can perform any other tasks. <\/p>\n<p><\/p>\n<p>The server starts as a combination of two main processes:<\/p>\n<ol>\n<li><b>\u00abConnections\u00bb<\/b> \u2013 a process for establishing connections with clients and terminating them at the server's initiative;<\/li>\n<li><b>\u00abOperations\u00bb<\/b> \u2013 a process for executing tasks (operations) for clients working with files, as well as for closing communication sessions upon client commands.<\/li>\n<\/ol>\n<p><\/p>\n<p>Both processes are not synchronized and are organized as endless loops for receiving and sending messages based on multiprocess queues, proxy objects, locks, and sockets.<br \/>\nThe \u00abConnections\u00bb process allocates a port for each client for data transmission. The number of ports is specified when starting the server. The correspondence between ports and clients is stored in shared proxy memory between processes.<\/p>\n<p><\/p>\n<p>The \u00abOperations\u00bb process supports the division of file resources, allowing multiple different clients to jointly (<i>quasi-parallel<\/i>, as access is managed by locks) read data from a single file, if this was permitted when it was initially opened by the \u00abfirst\u00bb client. \n<\/p>\n<p>Command processing for creating\/deleting\/opening\/closing files on <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sk\/server\/dts-dronten\/\"   title=\"serveri\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">serveri<\/a> is performed in the \u00abOperations\u00bb process strictly sequentially using the server's OS file subsystem.<\/p>\n<p><\/p>\n<p>Pre zv\u00fd\u0161enie r\u00fdchlosti \u010d\u00edtania\/z\u00e1pisu sa tieto oper\u00e1cie vykon\u00e1vaj\u00fa v vl\u00e1knach (threads), ktor\u00e9 generuje proces \u201eOper\u00e1cie\u201c. Po\u010det vl\u00e1kien je zvy\u010dajne rovn\u00fd po\u010dtu otvoren\u00fdch s\u00faborov. Zadania na \u010d\u00edtanie\/z\u00e1pis od klientov s\u00fa odosielan\u00e9 do spolo\u010dnej fronty a prv\u00e9 uvo\u013enen\u00e9 vl\u00e1kno preber\u00e1 \u00falohu z jej hlavy. \u0160peci\u00e1lna logika umo\u017e\u0148uje vyl\u00fa\u010di\u0165 oper\u00e1cie prep\u00edsania \u00fadajov v opera\u010dnej pam\u00e4ti servera.<\/p>\n<p><\/p>\n<p>Proces \u201eOper\u00e1cie\u201c sleduje aktivitu klientov a zastavuje ich obsluhu bu\u010f na ich povely, alebo pri prekro\u010den\u00ed \u010dasov\u00e9ho limitu neaktivity.<\/p>\n<p><\/p>\n<p>Na zabezpe\u010denie spo\u013eahlivosti Cageserver vedie z\u00e1znamy v\u0161etk\u00fdch transakci\u00ed. Jeden spolo\u010dn\u00fd z\u00e1znam obsahuje k\u00f3pie spr\u00e1v od klientov so zadan\u00edm na vytvorenie\/otvorenie\/prezmenu\/odstr\u00e1nenie s\u00faborov. Pre ka\u017ed\u00fd pracovn\u00fd s\u00fabor sa vytvor\u00ed samostatn\u00fd z\u00e1znam, v ktorom s\u00fa zaznamenan\u00e9 k\u00f3pie spr\u00e1v so zadan\u00edm na \u010d\u00edtanie a z\u00e1pis \u00fadajov v tomto pracovnom s\u00fabore, ako aj polia zapisovan\u00fdch (nov\u00fdch) \u00fadajov a polia \u00fadajov, ktor\u00e9 boli zni\u010den\u00e9 pri prepise (z\u00e1pise nov\u00fdch \u00fadajov \u201enad\u201c star\u00fdmi). <\/p>\n<p><\/p>\n<p>Tieto z\u00e1znamy umo\u017e\u0148uj\u00fa ako obnovu nov\u00fdch zmien v z\u00e1lohovan\u00ed, tak aj \u201en\u00e1vrat\u201c od aktu\u00e1lneho obsahu k po\u017eadovan\u00e9mu okamihu v minulosti. <\/p>\n<p><\/p>\n<p>Cageserver m\u00e1 pribli\u017ene 3100 riadkov k\u00f3du.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Syst\u00e9m vzd\u00e1len\u00e9ho p\u0159\u00edstupu k soubor\u016fm Cage\" src=\"\/wp-content\/uploads\/2019\/08\/606d593347d73274b0c172dae34da0d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Spustenie programu s\u00faborov\u00e9ho servera Cageserver<\/h3>\n<p><\/p>\n<p>Pri spusten\u00ed v dial\u00f3gu je potrebn\u00e9 ur\u010di\u0165:<br \/>\n \u2014 hlavn\u00fd port pre autoriz\u00e1ciu;<br \/>\n \u2014 po\u010det portov na v\u00fdmenu transakci\u00ed s autorizovan\u00fdmi klientmi (od 1 a viac, pool \u010d\u00edsel za\u010d\u00edna s \u010fal\u0161\u00edm po \u010d\u00edsle hlavn\u00e9ho portu).<\/p>\n<p><\/p>\n<h3>Pou\u017eitie triedy Cage<\/h3>\n<p><\/p>\n<p><b>class<\/b> cage.<b>Cage<\/b>( <i>cage_name=&gt;&gt;, pagesize=0, numpages=0, maxstrlen=0, server_ip={}, wait=0, awake=False, cache_file=&gt;&gt;<\/i> )<\/p>\n<p><\/p>\n<p>Z tejto triedy sa vytv\u00e1raj\u00fa objekty, ktor\u00e9 zabezpe\u010duj\u00fa interakciu so s\u00faborov\u00fdmi servermi a obsahuj\u00fa vyrovn\u00e1vaciu pam\u00e4\u0165.<\/p>\n<p><\/p>\n<p><b><u>Parametre<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 podmienen\u00e9 meno objektu, ktor\u00e9 sa pou\u017e\u00edva pri identifik\u00e1cii klientov na strane servera <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 ve\u013ekos\u0165 jednej str\u00e1nky vyrovn\u00e1vacej pam\u00e4te (v bajtoch)<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 po\u010det str\u00e1n vyrovn\u00e1vacej pam\u00e4te<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 maxim\u00e1lna d\u013a\u017eka bajtov\u00e9ho re\u0165azca pri oper\u00e1ci\u00e1ch z\u00e1pisu a \u010d\u00edtania<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 slovn\u00edk s adresami pou\u017e\u00edvan\u00fdmi <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sk\/server\/\"   title=\"serverov\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">serverov<\/a>, kde je k\u013e\u00fa\u010dom podmienen\u00e9 meno servera (id servera v aplik\u00e1cii), a hodnotou je re\u0165azec s adresou: \u201cip adresa:port\u201d alebo \u201cDNS:port\u201d (mapovanie mien a re\u00e1lnych adries je do\u010dasn\u00e9, je mo\u017en\u00e9 ho meni\u0165)<\/li>\n<li> <b>\u010daka\u0165<\/b>(<i>int<\/i>) \u2014 \u010das \u010dakania na odpove\u010f zo servera pri z\u00edskavan\u00ed portov (v sekund\u00e1ch)<\/li>\n<li> <b>prebudi\u0165<\/b>(<i>boolean<\/i>) \u2014 flag sp\u00f4sobu vytv\u00e1rania objektu (<i>False<\/i> \u2014 ak sa vytv\u00e1ra nov\u00fd objekt, <i>Pravda<\/i> \u2014 ak sa objekt vytv\u00e1ra zo sk\u00f4r \u201ezbalen\u00e9ho\u201c \u2014 pou\u017eit\u00edm oper\u00e1cie \u201ehibern\u00e1cia\u201c, predvolene Nepravda)<\/li>\n<li> <b>cache_file<\/b>(<i>str<\/i>) \u2014 n\u00e1zov s\u00faboru pre hibern\u00e1ciu<\/li>\n<\/ul>\n<p><\/p>\n<p><b><u>Met\u00f3dy<\/u><\/b><\/p>\n<p><\/p>\n<p>Cage.<b>file_create<\/b>( <i>server, cesta<\/i> ) \u2013 vytvori\u0165 nov\u00fd s\u00fabor<\/p>\n<p><\/p>\n<p>Cage.<b>file_rename<\/b>( <i>server, cesta, nov\u00e9_meno<\/i> ) \u2013 premenova\u0165 s\u00fabor<\/p>\n<p><\/p>\n<p>Cage.<b>file_remove<\/b>( <i>server, cesta<\/i>) \u2013 odstr\u00e1ni\u0165 s\u00fabor<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>server, cesta, mod <\/i>) \u2013 otvori\u0165 s\u00fabor<\/p>\n<p><\/p>\n<p>Vracia <i>fchannel<\/i> \u010d\u00edslo kan\u00e1la. Parametr <i>mod<\/i> \u2014 je re\u017eim otvorenia s\u00faboru: \u201ewm\u201c \u2014 monopoln\u00fd (\u010d\u00edtanie\/z\u00e1pis), \u201ers\u201c \u2014 len na \u010d\u00edtanie, a zdie\u013ean\u00fd len na \u010d\u00edtanie in\u00fdmi klientami, \u201ews\u201c \u2014 \u010d\u00edtanie\/z\u00e1pis, a zdie\u013ean\u00fd len pre \u010d\u00edtanie in\u00fdmi klientmi. <\/p>\n<p><\/p>\n<p>Cage.<b>zatvori\u0165<\/b> (<i>fchannel<\/i>) \u2013 zavrie\u0165 s\u00fabor<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, za\u010diatok, d\u00e1ta <\/i>) \u2013 zap\u00edsa\u0165 bajtov\u00fd re\u0165azec do s\u00faboru<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, za\u010diatok, d\u013a\u017eka_d\u00e1t<\/i> ) \u2013 pre\u010d\u00edta\u0165 bajtov\u00fd re\u0165azec zo s\u00faboru<\/p>\n<p><\/p>\n<p>Cage.<b>put_pages <\/b>( <i>fchannel<\/i> ) \u2013 \u201evytiahne\u201c z bufferu na server v\u0161etky str\u00e1nky ur\u010den\u00e9ho kan\u00e1la, ktor\u00e9 boli modifikovan\u00e9. Pou\u017e\u00edva sa v t\u00fdch bodoch algoritmu, ke\u010f je potrebn\u00e9 by\u0165 si ist\u00fd, \u017ee v\u0161etky oper\u00e1cie na kan\u00e1li s\u00fa fyzicky ulo\u017een\u00e9 v s\u00fabore na serveri.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 \u201evytiahne\u201c z bufferu na server v\u0161etky str\u00e1nky v\u0161etk\u00fdch kan\u00e1lov pre in\u0161tanciu triedy Cage, ktor\u00e9 boli modifikovan\u00e9. Pou\u017e\u00edva sa, ke\u010f je potrebn\u00e9 by\u0165 si ist\u00fd, \u017ee v\u0161etky oper\u00e1cie na v\u0161etk\u00fdch kan\u00e1loch s\u00fa ulo\u017een\u00e9 na serveri.<\/p>\n<p>Zdroj: <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.4 - 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\/sk\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\udd47Syst\u00e9m vzdialen\u00e9ho pr\u00edstupu k s\u00faborom Cage | ProHoster","description":"\u00da\u010del syst\u00e9mu Podpora vzdialen\u00e9ho pr\u00edstupu k s\u00faborom na po\u010d\u00edta\u010doch v sieti.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}