{"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\/cs\/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 \u201evirtu\u00e1ln\u011b\u201c podporuje v\u0161echny z\u00e1kladn\u00ed souborov\u00e9 operace (vytv\u00e1\u0159en\u00ed, maz\u00e1n\u00ed, \u010dten\u00ed, z\u00e1pis atd.) prost\u0159ednictv\u00edm v\u00fdm\u011bny transakc\u00ed (zpr\u00e1v) pomoc\u00ed protokolu TCP.<\/p>\n<p><\/p>\n<h3>Oblasti pou\u017eit\u00ed<\/h3>\n<p><\/p>\n<p>Funk\u010dnost 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 (chytr\u00e9 telefony, 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 \u010dasov\u00fdch v\u00fdpadk\u016f v p\u0159ipojen\u00ed (p\u0159i odchodu do offline);<\/li>\n<li> v zat\u00ed\u017een\u00fdch DBMS, pokud je zpracov\u00e1n\u00ed po\u017eadavk\u016f prov\u00e1d\u011bno na jedn\u011bch serverech, zat\u00edmco uchov\u00e1v\u00e1n\u00ed dat \u2013 na jin\u00fdch;<\/li>\n<li> v distribuovan\u00fdch podnikov\u00fdch s\u00edt\u00edch pro sb\u011br 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 komplexn\u00edch syst\u00e9mech s mikroservisn\u00ed architekturou, kde zpo\u017ed\u011bn\u00ed v v\u00fdm\u011bn\u011b informac\u00ed mezi moduly m\u00e1 kritick\u00fd 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 (existuje 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> \u2014 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 kter\u00fdch je t\u0159eba vzd\u00e1len\u00e9ho p\u0159\u00edstupu;<\/li>\n<li> t\u0159\u00edda <b>Cage<\/b> s knihovnou metod pro klientsk\u00e9 softwarov\u00e9 aplikace, 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, \u201erutinn\u00ed\u201c operace souborov\u00e9ho syst\u00e9mu: <i>vytv\u00e1\u0159en\u00ed, otev\u00edr\u00e1n\u00ed, zav\u00edr\u00e1n\u00ed, maz\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). Koncep\u010dn\u011b tyto metody p\u0159ibli\u017euj\u00ed k souborov\u00fdm funkc\u00edm jazyka C, kde se otev\u00edr\u00e1n\u00ed\/zav\u00edr\u00e1n\u00ed soubor\u016f prov\u00e1d\u00ed \u201ena kan\u00e1lech\u201c vstupu\/v\u00fdstupu. <\/p>\n<p><\/p>\n<p>Jin\u00fdmi slovy, program\u00e1tor nepracuje s metodami \u201esouborov\u00fdch\u201c objekt\u016f (t\u0159\u00eddy <b>_io<\/b> v Pythonu), ale s metodami t\u0159\u00eddy Cage.<\/p>\n<p><\/p>\n<p>P\u0159i vytv\u00e1\u0159en\u00ed instance objektu Cage se navazuje po\u010d\u00e1te\u010dn\u00ed spojen\u00ed se serverem (nebo n\u011bkolika servery), prov\u00e1d\u00ed autorizaci podle ID klienta a z\u00edsk\u00e1v\u00e1 potvrzen\u00ed s \u010d\u00edslem p\u0159id\u011blen\u00e9ho portu pro prov\u00e1d\u011bn\u00ed v\u0161ech souborov\u00fdch operac\u00ed. P\u0159i odstran\u011bn\u00ed objektu Cage vyd\u00e1v\u00e1 serveru p\u0159\u00edkaz k ukon\u010den\u00ed spojen\u00ed a uzav\u0159en\u00ed soubor\u016f. Ukon\u010den\u00ed spojen\u00ed mohou iniciovat i samotn\u00e9 servery.<\/p>\n<p><\/p>\n<p>Syst\u00e9m zvy\u0161uje v\u00fdkonnost \u010dten\u00ed\/z\u00e1pisu na z\u00e1klad\u011b vyrovn\u00e1n\u00ed \u010dasto pou\u017e\u00edvan\u00fdch fragment\u016f soubor\u016f klientsk\u00fdmi programy v mezipam\u011bti (cache) opera\u010dn\u00ed pam\u011bti.<br \/>\nKlientsk\u00fd software m\u016f\u017ee pou\u017e\u00edt libovoln\u00fd po\u010det objekt\u016f Cage s r\u016fzn\u00fdmi nastaven\u00edmi (velikost vyrovn\u00e1vac\u00ed pam\u011bti, velikost blok\u016f p\u0159i v\u00fdm\u011bn\u011b se serverem atd.). <\/p>\n<p><\/p>\n<p>Jeden objekt Cage m\u016f\u017ee vym\u011b\u0148ovat data s n\u011bkolika soubory na n\u011bkolika serverech. Parametry pro spojen\u00ed (IP adresa nebo DNS serveru, hlavn\u00ed port pro autorizaci, cesta a n\u00e1zev souboru) jsou zad\u00e1ny p\u0159i vytvo\u0159en\u00ed objektu.<\/p>\n<p><\/p>\n<p>Jeliko\u017e ka\u017ed\u00fd objekt Cage m\u016f\u017ee sou\u010dasn\u011b pracovat s mnoha soubory, pro vyrovn\u00e1v\u00e1n\u00ed se pou\u017e\u00edv\u00e1 sd\u00edlen\u00fd prostor pam\u011bti. Velikost cache \u2013 mno\u017estv\u00ed str\u00e1nek a jejich velikost, se stanovuje dynamicky p\u0159i vytvo\u0159en\u00ed objektu Cage. Nap\u0159\u00edklad cache o velikosti 1 GB \u2013 to je 1000 str\u00e1nek po 1 MB, nebo 10 000 str\u00e1nek po 100 kB, nebo 1 milion str\u00e1nek po 1 kB. V\u00fdb\u011br velikosti a po\u010dtu str\u00e1nek je konkr\u00e9tn\u00ed \u00fakol pro ka\u017ed\u00fd aplika\u010dn\u00ed p\u0159\u00edpad.<\/p>\n<p><\/p>\n<p>Lze sou\u010dasn\u011b pou\u017e\u00edt n\u011bkolik objekt\u016f Cage, aby se definovala r\u016fzn\u00e1 nastaven\u00ed vyrovn\u00e1vac\u00ed pam\u011bti v z\u00e1vislosti na zvl\u00e1\u0161tnostech p\u0159\u00edstupu k informac\u00edm v r\u016fzn\u00fdch souborech. Jako z\u00e1kladn\u00ed se pou\u017e\u00edv\u00e1 nejjednodu\u0161\u0161\u00ed algoritmus vyrovn\u00e1v\u00e1n\u00ed: po vy\u010derp\u00e1n\u00ed stanoven\u00e9ho objemu pam\u011bti nov\u00e9 str\u00e1nky vytla\u010duj\u00ed star\u00e9 podle principu vy\u0159azen\u00ed s minim\u00e1ln\u00edm po\u010dtem p\u0159\u00edstup\u016f. Vyrovn\u00e1v\u00e1n\u00ed je obzvl\u00e1\u0161t\u011b efektivn\u00ed v p\u0159\u00edpad\u011b nerovnom\u011brn\u00e9ho (v statistick\u00e9m smyslu) spole\u010dn\u00e9ho p\u0159\u00edstupu, jednak k r\u016fzn\u00fdm soubor\u016fm, a jednak k fragment\u016fm ka\u017ed\u00e9ho souboru. <\/p>\n<p><\/p>\n<p>T\u0159\u00edda Cage podporuje vstup\/v\u00fdstup nejen podle adres dat (se zad\u00e1n\u00edm pozice a d\u00e9lky pole, \"nahrazuj\u00edc\u00ed\" operace souborov\u00e9ho syst\u00e9mu), ale tak\u00e9 na ni\u017e\u0161\u00ed, \"fyzick\u00e9\" \u00farovni \u2013 podle \u010d\u00edsel str\u00e1nek v vyrovn\u00e1vac\u00ed pam\u011bti. <\/p>\n<p><\/p>\n<p>Pro objekty Cage je podporov\u00e1na origin\u00e1ln\u00ed funkce <i>\"hibernace\"<\/i> (\u201esny\u201c) \u2013 lze je \u201esbalit\u201c (nap\u0159\u00edklad v p\u0159\u00edpad\u011b ztr\u00e1ty spojen\u00ed se servery nebo p\u0159i zastaven\u00ed aplikace atd.) do m\u00edstn\u00edho dumpu na stran\u011b klienta a rychle obnovit z tohoto souboru (po obnoven\u00ed spojen\u00ed, p\u0159i op\u011btovn\u00e9m spu\u0161t\u011bn\u00ed aplikace). To umo\u017e\u0148uje v\u00fdznamn\u00e9 sn\u00ed\u017een\u00ed datov\u00e9ho provozu p\u0159i aktivaci klientsk\u00e9ho programu po do\u010dasn\u00e9m \u201eoffline\u201c re\u017eimu, proto\u017ee \u010dasto pou\u017e\u00edvan\u00e9 \u010d\u00e1sti soubor\u016f ji\u017e budou v cache.<\/p>\n<p><\/p>\n<p>Cage \u2013 to je p\u0159ibli\u017en\u011b 3600 \u0159\u00e1dk\u016f k\u00f3du.<\/p>\n<p><\/p>\n<h3>Principy v\u00fdstavby server\u016f<\/h3>\n<p><\/p>\n<p>Cage-serverov\u00e9 soubory lze spou\u0161t\u011bt s libovoln\u00fdm po\u010dtem port\u016f, p\u0159i\u010dem\u017e jeden z nich (\u201ehlavn\u00ed\u201c) se pou\u017e\u00edv\u00e1 pouze pro autorizaci v\u0161ech klient\u016f, ostatn\u00ed \u2013 pro v\u00fdm\u011bnu dat. Pro program serveru Cage je pot\u0159ebn\u00fd pouze Python. Sou\u010dasn\u011b m\u016f\u017ee po\u010d\u00edta\u010d s file-serverem vykon\u00e1vat jakoukoli jinou pr\u00e1ci. <\/p>\n<p><\/p>\n<p>Server se na za\u010d\u00e1tku spou\u0161t\u00ed jako soubor dvou hlavn\u00edch proces\u016f:<\/p>\n<ol>\n<li><b>\u201eSpojen\u00ed\u201c<\/b> \u2013 proces pro prov\u00e1d\u011bn\u00ed operac\u00ed navazov\u00e1n\u00ed spojen\u00ed s klienty a ukon\u010den\u00ed spojen\u00ed na podn\u011bt serveru;<\/li>\n<li><b>\u201eOperace\u201c<\/b> \u2013 proces pro prov\u00e1d\u011bn\u00ed \u00fakol\u016f (operac\u00ed) klient\u016f t\u00fdkaj\u00edc\u00edch se pr\u00e1ce se soubory a tak\u00e9 pro ukon\u010den\u00ed sezen\u00ed podle p\u0159\u00edkaz\u016f klient\u016f.<\/li>\n<\/ol>\n<p><\/p>\n<p>Oba procesy nejsou synchronizov\u00e1ny a jsou organizov\u00e1ny jako nekone\u010dn\u00e9 cykly p\u0159\u00edjmu a odes\u00edl\u00e1n\u00ed zpr\u00e1v na z\u00e1klad\u011b multiprocessn\u00edch front, proxy-objekt\u016f, z\u00e1mk\u016f a socket\u016f.<br \/>\nProces \u201eSpojen\u00ed\u201c p\u0159id\u011bluje ka\u017ed\u00e9mu klientovi port pro p\u0159ij\u00edm\u00e1n\u00ed a odes\u00edl\u00e1n\u00ed dat. Po\u010det port\u016f je stanoven p\u0159i spu\u0161t\u011bn\u00ed serveru. Shoda mezi porty a klienty se uchov\u00e1v\u00e1 ve sd\u00edlen\u00e9 mezi procesy proxy-pam\u011bti.<\/p>\n<p><\/p>\n<p>Proces \u201eOperace\u201c podporuje rozd\u011blen\u00ed souborov\u00fdch zdroj\u016f, p\u0159i\u010dem\u017e n\u011bkolik r\u016fzn\u00fdch klient\u016f m\u016f\u017ee spole\u010dn\u011b (<i>kvaziparaleln\u011b<\/i>, proto\u017ee p\u0159\u00edstup je \u0159\u00edzen z\u00e1mky) \u010d\u00edst data z jednoho souboru, pokud to bylo povoleno p\u0159i jeho po\u010d\u00e1te\u010dn\u00edm otev\u0159en\u00ed \u201eprvn\u00edm\u201c klientem. \n<\/p>\n<p>Zpracov\u00e1n\u00ed p\u0159\u00edkaz\u016f pro vytv\u00e1\u0159en\u00ed\/maz\u00e1n\u00ed\/otev\u0159en\u00ed\/uzav\u0159en\u00ed soubor\u016f na <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/cs\/server\/dts-dronten\/\"   title=\"serveru\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">serveru<\/a> se prov\u00e1d\u00ed p\u0159\u00edmo v procesu \u201eOperace\u201c p\u0159\u00edsn\u011b sekven\u010dn\u011b za pou\u017eit\u00ed souborov\u00e9ho subsyst\u00e9mu opera\u010dn\u00edho syst\u00e9mu serveru.<\/p>\n<p><\/p>\n<p>Pro urychlen\u00ed \u010dten\u00ed\/z\u00e1pisu se tyto operace prov\u00e1d\u011bj\u00ed v vl\u00e1knech (threads), kter\u00e9 vytv\u00e1\u0159\u00ed proces \u201eOperace\u201c. Po\u010det vl\u00e1ken je obvykle roven po\u010dtu otev\u0159en\u00fdch soubor\u016f. \u00dakoly pro \u010dten\u00ed\/z\u00e1pis od klient\u016f jsou zas\u00edl\u00e1ny do spole\u010dn\u00e9 fronty a prvn\u00ed uvoln\u011bn\u00e9 vl\u00e1kno si vezme \u00fakol z jej\u00edho za\u010d\u00e1tku. Speci\u00e1ln\u00ed logika vylu\u010duje operace p\u0159episov\u00e1n\u00ed dat v opera\u010dn\u00ed pam\u011bti serveru.<\/p>\n<p><\/p>\n<p>Proces \u201eOperace\u201c sleduje aktivitu klient\u016f a ukon\u010duje jejich obsluhu jak na jejich p\u0159\u00edkazy, tak p\u0159i p\u0159ekro\u010den\u00ed \u010dasov\u00e9ho limitu neaktivity.<\/p>\n<p><\/p>\n<p>Pro zaji\u0161t\u011bn\u00ed spolehlivosti Cageserver vede z\u00e1znamy v\u0161ech transakc\u00ed. Jeden spole\u010dn\u00fd z\u00e1znam obsahuje kopie zpr\u00e1v od klient\u016f s \u00fakoly na vytv\u00e1\u0159en\u00ed\/otev\u00edr\u00e1n\u00ed\/p\u0159ejmenov\u00e1v\u00e1n\u00ed\/maz\u00e1n\u00ed soubor\u016f. Pro ka\u017ed\u00fd pracovn\u00ed soubor se vytv\u00e1\u0159\u00ed samostatn\u00fd z\u00e1znam, ve kter\u00e9m jsou zapisov\u00e1ny kopie zpr\u00e1v s \u00fakoly na \u010dten\u00ed a z\u00e1pis dat v tomto pracovn\u00edm souboru, stejn\u011b jako pole zapisovan\u00fdch (nov\u00fdch) dat a pole dat, kter\u00e1 byla zni\u010dena p\u0159i p\u0159episov\u00e1n\u00ed (z\u00e1pisu nov\u00fdch dat \u201ep\u0159es\u201c star\u00e1). <\/p>\n<p><\/p>\n<p>Tyto z\u00e1znamy poskytuj\u00ed mo\u017enost jak pro obnoven\u00ed nov\u00fdch zm\u011bn v z\u00e1loh\u00e1ch, tak pro \u201evracen\u00ed\u201c od aktu\u00e1ln\u00edho obsahu k pot\u0159ebn\u00e9mu okam\u017eiku v minulosti. <\/p>\n<p><\/p>\n<p>Cageserver m\u00e1 p\u0159ibli\u017en\u011b 3100 \u0159\u00e1dk\u016f 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>Spu\u0161t\u011bn\u00ed programu souborov\u00e9ho serveru Cageserver<\/h3>\n<p><\/p>\n<p>P\u0159i spu\u0161t\u011bn\u00ed je t\u0159eba ur\u010dit:<br \/>\n \u2014 hlavn\u00ed port pro autorizaci;<br \/>\n \u2014 po\u010det port\u016f pro v\u00fdm\u011bnu transakc\u00ed s autorizovan\u00fdmi klienty (od 1 a v\u00edce, rozsah \u010d\u00edsel za\u010d\u00edn\u00e1 hned po \u010d\u00edsle hlavn\u00edho portu).<\/p>\n<p><\/p>\n<h3>Pou\u017eit\u00ed t\u0159\u00eddy Cage<\/h3>\n<p><\/p>\n<p><b>t\u0159\u00edda<\/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 t\u00e9to t\u0159\u00eddy jsou vytv\u00e1\u0159eny objekty, kter\u00e9 prov\u00e1d\u011bj\u00ed interakci se souborov\u00fdmi servery a obsahuj\u00ed vyrovn\u00e1vac\u00ed pam\u011b\u0165.<\/p>\n<p><\/p>\n<p><b><u>Parametry<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 podm\u00edn\u011bn\u00e9 jm\u00e9no objektu, kter\u00e9 se pou\u017e\u00edv\u00e1 p\u0159i identifikaci klient\u016f na stran\u011b serveru <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 velikost jedn\u00e9 str\u00e1nky vyrovn\u00e1vac\u00ed pam\u011bti (v bytech)<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 po\u010det str\u00e1nek vyrovn\u00e1vac\u00ed pam\u011bti<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 maxim\u00e1ln\u00ed d\u00e9lka bajtov\u00e9ho \u0159et\u011bzce p\u0159i operac\u00edch z\u00e1pisu a \u010dten\u00ed<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 slovn\u00edk s adresami pou\u017e\u00edvan\u00fdch <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/cs\/server\/\"   title=\"servery\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">servery<\/a>, kde kl\u00ed\u010dem je podm\u00ednkov\u00e9 jm\u00e9no serveru (id serveru uvnit\u0159 aplikace) a hodnotou je \u0159et\u011bzec s adresou: \u201cip adresa:port\u201d nebo \u201cDNS:port\u201d (mapov\u00e1n\u00ed jmen a skute\u010dn\u00fdch adres je do\u010dasn\u00e9, lze je m\u011bnit)<\/li>\n<li> <b>wait<\/b>(<i>int<\/i>) \u2014 \u010das \u010dek\u00e1n\u00ed na odpov\u011b\u010f od serveru p\u0159i z\u00edsk\u00e1v\u00e1n\u00ed port\u016f (v sek.)<\/li>\n<li> <b>probuzen\u00fd<\/b>(<i>boolean<\/i>) \u2014 p\u0159\u00edznak zp\u016fsobu vytv\u00e1\u0159en\u00ed objektu (<i>P\u0159i prov\u00e1d\u011bn\u00ed sc\u00e9n\u00e1\u0159e Nornir se do konzole vyprodukuj\u00ed podrobn\u00e9 logy.<\/i> \u2014 pokud je vytv\u00e1\u0159en nov\u00fd objekt, <i>Pravda<\/i> \u2014 pokud je objekt vytv\u00e1\u0159en z d\u0159\u00edve \u201euspan\u00e9ho\u201c \u2014 pou\u017eit\u00edm operace \u201ehibernace\u201c, v\u00fdchoz\u00ed hodnota False)<\/li>\n<li> <b>cache_file<\/b>(<i>str<\/i>) \u2014 n\u00e1zev souboru pro hibernaci<\/li>\n<\/ul>\n<p><\/p>\n<p><b><u>Metody<\/u><\/b><\/p>\n<p><\/p>\n<p>Cage.<b>file_create<\/b>( <i>server, cesta<\/i> ) \u2013 vytvo\u0159it nov\u00fd soubor<\/p>\n<p><\/p>\n<p>Cage.<b>file_rename<\/b>( <i>server, cesta, new_name<\/i> ) \u2013 p\u0159ejmenovat soubor<\/p>\n<p><\/p>\n<p>Cage.<b>file_remove<\/b>( <i>server, cesta<\/i>) \u2013 odstranit soubor<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>server, cesta, mod <\/i>) \u2013 otev\u0159\u00edt soubor<\/p>\n<p><\/p>\n<p>Vr\u00e1t\u00ed <i>fchannel<\/i> \u010d\u00edslo kan\u00e1lu. Parametr <i>mod<\/i> \u2014 je re\u017eim otev\u0159en\u00ed souboru: \u201ewm\u201c \u2014 monopoln\u00ed (\u010dten\u00ed\/z\u00e1pis), \u201ers\u201c \u2014 pouze \u010dten\u00ed, a sd\u00edlen\u00fd pouze pro \u010dten\u00ed jin\u00fdmi klienty, \u201ews\u201c \u2014 \u010dten\u00ed\/z\u00e1pis, a sd\u00edlen\u00fd pouze pro \u010dten\u00ed jin\u00fdmi klienty. <\/p>\n<p><\/p>\n<p>Cage.<b>close<\/b> (<i>fchannel<\/i>) \u2013 zav\u0159\u00edt soubor<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, za\u010d\u00e1tek, data <\/i>) \u2013 zapsat bajtov\u00fd \u0159et\u011bzec do souboru<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, za\u010d\u00e1tek, len_data<\/i> ) \u2013 p\u0159e\u010d\u00edst bajtov\u00fd \u0159et\u011bzec ze souboru<\/p>\n<p><\/p>\n<p>Cage.<b>put_pages <\/b>( <i>fchannel<\/i> ) \u2013 \u201evytla\u010duje\u201c z bufferu na server v\u0161echny str\u00e1nky dan\u00e9ho kan\u00e1lu, kter\u00e9 byly modifikov\u00e1ny. Pou\u017e\u00edv\u00e1 se v t\u011bch bodech algoritmu, kdy je t\u0159eba m\u00edt jistotu, \u017ee v\u0161echny operace na kan\u00e1lu jsou fyzicky ulo\u017eeny v souboru na serveru.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 \u201evytla\u010duje\u201c z bufferu na server v\u0161echny str\u00e1nky v\u0161ech kan\u00e1l\u016f pro instanci t\u0159\u00eddy Cage, kter\u00e9 byly modifikov\u00e1ny. Pou\u017e\u00edv\u00e1 se, kdy\u017e je t\u0159eba m\u00edt jistotu, \u017ee v\u0161echny operace na v\u0161ech kan\u00e1lech jsou ulo\u017een\u00e9 na serveru.<\/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.3 - 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\/cs\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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 vzd\u00e1len\u00e9ho p\u0159\u00edstupu k soubor\u016fm Cage | ProHoster","description":"\u00da\u010del syst\u00e9mu Podpora vzd\u00e1len\u00e9ho p\u0159\u00edstupu k soubor\u016fm na po\u010d\u00edta\u010d\u00edch v s\u00edti.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}