{"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\/hr\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","title":{"rendered":"Sistem daljinskog pristupa datotekama Cage","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>Namjena sustava<\/h3>\n<p><\/p>\n<p>Podr\u0161ka za udaljeni pristup datotekama na ra\u010dunalima u mre\u017ei. Sustav \"virtualno\" podr\u017eava sve osnovne operacije s datotekama (stvaranje, brisanje, \u010ditanje, pisanje i dr.) putem razmjene transakcija (poruka) po TCP protokolu.<\/p>\n<p><\/p>\n<h3>Podru\u010dja primjene<\/h3>\n<p><\/p>\n<p>Funkcionalnost sustava je u\u010dinkovita u sljede\u0107im slu\u010dajevima:<\/p>\n<ul>\n<li> u nativnim aplikacijama za mobilne i ugra\u0111ene ure\u0111aje (pametan telefoni, sustavi za upravljanje na brodu itd.), koji zahtijevaju brz pristup datotekama na udaljenim poslu\u017eiteljima u uvjetima vjerojatnih vremenskih prekida veze (kada odlaze u offline);<\/li>\n<li> u optere\u0107enim DBMS-ima, ako se obrada zahtjeva provodi na jednim poslu\u017eiteljima, a pohrana podataka \u2013 na drugim;<\/li>\n<li> u distribuiranim korporativnim mre\u017eama za prikupljanje i obradu informacija, koje zahtijevaju visoku brzinu prijenosa podataka, rezervaciju i pouzdanost;<\/li>\n<li> u slo\u017eenim sustavima s mikroservisnom arhitekturom, gdje su ka\u0161njenja u razmjeni informacija izme\u0111u modula od kriti\u010dne va\u017enosti.<\/li>\n<\/ul>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex> <\/p>\n<h3>Struktura<\/h3>\n<p><\/p>\n<p>Sustav Cage (ima implementaciju \u2014 beta verziju u Pythonu 3.7 na Windows operativnom sustavu) uklju\u010duje dva glavna dijela: <\/p>\n<ol>\n<li> <b>Cageserver<\/b> \u2014 program datote\u010dnog poslu\u017eitelja (paket funkcija), koji se pokre\u0107e na ra\u010dunalima u mre\u017ei, \u010dijim datotekama je potreban udaljeni pristup;<\/li>\n<li> klasa <b>Cage<\/b> s bibliotekom metoda za klijentski softver, koja pojednostavljuje kodiranje interakcije s poslu\u017eiteljima.<\/li>\n<\/ol>\n<p><\/p>\n<h3>Kori\u0161tenje sustava na strani klijenata<\/h3>\n<p><\/p>\n<p>Metode klase Cage zamjenjuju uobi\u010dajene, \"rutinske\" operacije datote\u010dnog sustava: <i>stvaranje, otvaranje, zatvaranje, brisanje <\/i>datotek\u00e2, kao i <i>\u010ditanje\/pisanje podataka u binarnom formatu<\/i> (s navo\u0111enjem pozicije i veli\u010dine podataka). Konceptualno su te metode pribli\u017ene datote\u010dnim funkcijama jezika C, gdje se otvaranje\/zatvaranje datoteka provodi \"na kanalima\" ulazno-izlaznih operacija. <\/p>\n<p><\/p>\n<p>Drugim rije\u010dima, programer radi ne s metodama \"datote\u010dnih\" objekata (klasa <b>_io<\/b> u Pythonu), nego s metodama klase Cage.<\/p>\n<p><\/p>\n<p>Pri stvaranju instance objekta Cage uspostavlja se po\u010detna veza s poslu\u017eiteljem (ili vi\u0161e poslu\u017eitelja), prolazi autorizaciju putem ID klijenta i dobiva potvrdu s brojem dodijeljenog porta za izvr\u0161avanje svih operacija s datotekama. Pri brisanju objekta Cage daje poslu\u017eitelju naredbu za prekid veze i zatvaranje datoteka. Prekid veze mogu inicirati i sami poslu\u017eitelji.<\/p>\n<p><\/p>\n<p>Sustav pobolj\u0161ava brzinu \u010ditanja\/pisanja temeljem predmemoriranja \u010desto kori\u0161tenih dijelova datoteka u predmemoriji (bufi) radne memorije klijentskih programa.<br \/>\nKlijentski softver mo\u017ee koristiti bilo broj objekata Cage s razli\u010ditim postavkama (veli\u010dina predmemorije, veli\u010dina blokova pri razmjeni s poslu\u017eiteljem itd.). <\/p>\n<p><\/p>\n<p>Jedan objekt Cage mo\u017ee razmjenjivati podatke s vi\u0161e datoteka na vi\u0161e poslu\u017eitelja. Parametri za vezu (IP adresa ili DNS poslu\u017eitelja, glavni port za autorizaciju, putanja i naziv datoteke) definiraju se prilikom stvaranja objekta.<\/p>\n<p><\/p>\n<p>Budu\u0107i da svaki objekt Cage mo\u017ee istovremeno raditi s mnogim datotekama, za predmemoriranje se koristi zajedni\u010dki prostor memorije. Veli\u010dina predmemorije - broj stranica i njihova veli\u010dina, odre\u0111uje se dinami\u010dki prilikom stvaranja objekta Cage. Na primjer, predmemorija od 1 GB - to je 1000 stranica po 1 MB, ili 10.000 stranica po 100 KB, ili 1 milijun stranica po 1 KB. Odabir veli\u010dine i broja stranica specifi\u010dan je zadatak za svaki pojedini slu\u010daj primjene.<\/p>\n<p><\/p>\n<p>Mo\u017ee se istovremeno koristiti vi\u0161e objekata Cage kako bi se odredile razli\u010dite postavke predmemorije ovisno o karakteristikama pristupa informacijama u razli\u010ditim datotekama. Kao osnovni primjenjuje se najjednostavniji algoritam predmemoriranja: nakon iscrpljivanja zadanog volumena memorije nove stranice istiskuju stare prema principu izlaska s minimalnim brojem pristupa. Predmemoriranje je osobito u\u010dinkovito u slu\u010daju nejednakog (u statisti\u010dkom smislu) zajedni\u010dkog pristupa, s jedne strane, razli\u010ditim datotekama, a s druge strane, dijelovima svake datoteke. <\/p>\n<p><\/p>\n<p>Klasa Cage podr\u017eava ulaz\/izlaz ne samo po adresama podataka (uz navo\u0111enje pozicije i duljine niza, 'zamjenjuju\u0107i' operacije datote\u010dnog sustava), nego i na ni\u017eoj, 'fizi\u010dkoj' razini - prema brojevima stranica u predmemoriji. <\/p>\n<p><\/p>\n<p>Za objekte Cage podr\u017eava se izvorna funkcija <i>\u201ehibernacije\u201c<\/i> (\u00abspavanje\u00bb) \u2013 mogu se \u201esmanjiti\u201c (na primjer, u slu\u010daju prekida veze s poslu\u017eiteljima ili pri zaustavljanju aplikacije i sli\u010dno) u lokalnu dump datoteku na strani klijenta i brzo obnoviti iz te datoteke (nakon ponovnog uspostavljanja veze, pri ponovnom pokretanju aplikacije). Ovo omogu\u0107ava zna\u010dajno smanjenje prometa prilikom aktivacije rada klijentskog programa nakon privremenog odlaska \u201eu offline\u201c, budu\u0107i da \u010desto kori\u0161teni dijelovi datoteka ve\u0107 \u0107e biti pohranjeni u predmemoriji.<\/p>\n<p><\/p>\n<p>Cage \u2014 to je oko 3600 redaka koda.<\/p>\n<p><\/p>\n<h3>Na\u010dela izgradnje poslu\u017eitelja<\/h3>\n<p><\/p>\n<p>Cage poslu\u017eitelji za datoteke mogu se pokretati s proizvoljnim brojem portova, jedan od kojih (\u201eglavni\u201c) koristi se samo za autorizaciju svih klijenata, dok se ostali koriste za razmjenu podataka. Za program poslu\u017eitelja Cage potreban je samo Python. Paralelno, ra\u010dunalni poslu\u017eitelj datoteka mo\u017ee obavljati bilo koji drugi posao. <\/p>\n<p><\/p>\n<p>Poslu\u017eitelj se pokre\u0107e u po\u010detku kao skupina dva glavna procesa:<\/p>\n<ol>\n<li><b>\u201eVeze\u201c<\/b> \u2013 proces za izvr\u0161avanje operacija uspostavljanja veze s klijentima i njeno prekidanje na inicijativu poslu\u017eitelja;<\/li>\n<li><b>\u201eOperacije\u201c<\/b> \u2013 proces za izvr\u0161avanje zadataka (operacija) klijenata vezanih uz rad s datotekama, kao i za zatvaranje sesija veze po naredbama klijenata.<\/li>\n<\/ol>\n<p><\/p>\n<p>Oba procesa nisu sinkronizirana i organizirana su kao beskrajni ciklusi primanja i slanja poruka temeljenih na multiprocess prioritetnim redovima, proxy objektima, zaklju\u010davanju i soketima.<br \/>\nProces \u201eVeze\u201c dodjeljuje svakom klijentu port za prijenos podataka. Broj portova odre\u0111uje se prilikom pokretanja poslu\u017eitelja. Odnos izme\u0111u portova i klijenata pohranjuje se u dijeljenoj proxy memoriji izme\u0111u procesa.<\/p>\n<p><\/p>\n<p>Proces \u201eOperacije\u201c podr\u017eava dijeljenje datote\u010dnih resursa, pri \u010demu nekoliko razli\u010ditih klijenata mo\u017ee zajedni\u010dki (<i>kvaziparalelno<\/i>, budu\u0107i da se pristup upravlja zaklju\u010dcima) \u010ditati podatke iz jedne datoteke, ako je to odobreno prilikom njenog po\u010detnog otvaranja od \u201eprvog\u201c klijenta. \n<\/p>\n<p>Obrada naredbi za kreiranje\/brisanje\/otvaranje\/zatvaranje datoteka na <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hr\/server\/dts-dronten\/\"   title=\"serveru\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2497\">serveru<\/a> izvodi se u samom procesu \u201eOperacije\u201c strogo slijedno koriste\u0107i datote\u010dni sustav OS-a poslu\u017eitelja.<\/p>\n<p><\/p>\n<p>Za op\u0107e ubrzanje \u010ditanja i pisanja, ove operacije se vr\u0161e u niti (threads), koje pokre\u0107e proces \"Operacije\". Broj niti obi\u010dno odgovara broju otvorenih datoteka. Zadaci za \u010ditanje\/pisanje od klijenata podnose se u zajedni\u010dku queue, a prva slobodna nit preuzima zadatak s njenog vrha. Posebna logika omogu\u0107ava isklju\u010divanje operacija prepisivanja podataka u radnoj memoriji poslu\u017eitelja.<\/p>\n<p><\/p>\n<p>Proces \"Operacije\" prati aktivnost klijenata i prekida njihovu uslugu kako po njihovim naredbama, tako i u slu\u010daju prekora\u010denja vremenskog ograni\u010denja neaktivnosti.<\/p>\n<p><\/p>\n<p>Za osiguranje pouzdanosti, Cageserver vodi dnevnike svih transakcija. Jedan zajedni\u010dki dnevnik sadr\u017ei kopije poruka od klijenata sa zadacima za stvaranje\/otvaranje\/preimenovanje\/brisanje datoteka. Za svaku radnu datoteku kreira se poseban dnevnik u kojem se bilje\u017ee kopije poruka sa zadacima za \u010ditanje i pisanje podataka u toj radnoj datoteci, kao i nizovi spremljenih (novih) podataka i nizovi podataka koji su uni\u0161teni prepisivanjem (upisivanjem novih podataka \"preko\" starih). <\/p>\n<p><\/p>\n<p>Ovi dnevnici omogu\u0107uju kako oporavak novih promjena u rezervnim kopijama, tako i \"povratak\" s trenutnog sadr\u017eaja na odre\u0111eni trenutak u pro\u0161losti. <\/p>\n<p><\/p>\n<p>Cageserver se sastoji od oko 3100 linija koda.<\/p>\n<p>\n<img decoding=\"async\" alt=\"Sistem daljinskog pristupa datotekama Cage\" src=\"\/wp-content\/uploads\/2019\/08\/606d593347d73274b0c172dae34da0d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Pokretanje programa datote\u010dnog poslu\u017eitelja Cageserver<\/h3>\n<p><\/p>\n<p>Prilikom pokretanja u dijalogu treba odrediti:<br \/>\n \u2014 glavni port za autorizaciju;<br \/>\n \u2014 broj portova za razmjenu transakcijama s autoriziranim klijentima (od 1 i vi\u0161e, skup brojeva po\u010dinje s onim nakon glavnog port broja).<\/p>\n<p><\/p>\n<h3>Kori\u0161tenje klase 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>Iz ove klase se kreiraju objekti koji vr\u0161e interakciju s datote\u010dnim poslu\u017eiteljima i sadr\u017ee bafer memoriju.<\/p>\n<p><\/p>\n<p><b><u>Postavke<\/u><\/b><\/p>\n<p><\/p>\n<ul>\n<li> <b>cage_name<\/b>(<i>str<\/i>) \u2014 uvjetno ime objekta koje se koristi pri identifikaciji klijenata na strani poslu\u017eitelja <\/li>\n<li> <b>pagesize<\/b>(<i>int<\/i>) \u2014 veli\u010dina jedne stranice bafer memorije (u bajtovima)<\/li>\n<li> <b>numpages<\/b>(<i>int<\/i>) \u2014 broj stranica bafer memorije<\/li>\n<li> <b>maxstrlen<\/b>(<i>int<\/i>) \u2014 maksimalna du\u017eina bajtne niza u operacijama pisanja i \u010ditanja<\/li>\n<li> <b>server_ip<\/b>(<i>dict<\/i>) \u2014 rje\u010dnik s adresama koje se koriste <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/hr\/server\/\"   title=\"poslu\u017eitelja\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1347\">poslu\u017eitelja<\/a>, gdje je klju\u010d uvjetno ime poslu\u017eitelja (id poslu\u017eitelja unutar aplikacije), a vrijednost je niz s adresom: \u201cip adresa:port\u201d ili \u201cDNS:port\u201d (mape imena i stvarnih adresa su privremene, mogu se mijenjati)<\/li>\n<li> <b>wait<\/b>(<i>int<\/i>) \u2014 vrijeme \u010dekanja odgovora od poslu\u017eitelja prilikom primanja portova (u sekundama)<\/li>\n<li> <b>budan<\/b>(<i>boolean<\/i>) \u2014 zastavica na\u010dina stvaranja objekta (<i>False<\/i> \u2014 ako se stvara novi objekt, <i>True<\/i> \u2014 ako se objekt stvara iz ranije \u201esmanjenog\u201c \u2014 primjenom operacije \u201ehibernacija\u201c, prema zadanim postavkama False)<\/li>\n<li> <b>cache_file<\/b>(<i>str<\/i>) \u2014 ime datoteke za hibernaciju<\/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>poslu\u017eitelj, putanja<\/i> ) \u2013 stvoriti novu datoteku<\/p>\n<p><\/p>\n<p>Cage.<b>file_rename<\/b>( <i>poslu\u017eitelj, putanja, novo_ime<\/i> ) \u2013 preimenuj datoteku<\/p>\n<p><\/p>\n<p>Cage.<b>file_remove<\/b>( <i>poslu\u017eitelj, putanja<\/i>) \u2013 obrisi datoteku<\/p>\n<p><\/p>\n<p>Cage.<b>open<\/b>( <i>poslu\u017eitelj, putanja, mod <\/i>) \u2013 otvori datoteku<\/p>\n<p><\/p>\n<p>Vra\u0107a <i>fchannel<\/i> broj kanala. Parametar <i>mod<\/i> \u2014 na\u010din otvaranja datoteke: \u201ewm\u201c \u2014 monopolni (\u010ditanje\/zapis), \u201ers\u201c \u2014 samo za \u010ditanje, i dijeljen samo za \u010ditanje od strane drugih klijenata, \u201ews\u201c \u2014 \u010ditanje\/zapis, i dijeljen samo za \u010ditanje od strane drugih klijenata. <\/p>\n<p><\/p>\n<p>Cage.<b>close<\/b> (<i>fchannel<\/i>) \u2013 zatvori datoteku<\/p>\n<p><\/p>\n<p>Cage.<b>write <\/b>(<i>fchannel, po\u010detak, podaci <\/i>) \u2013 zapisati bajtni niz u datoteku<\/p>\n<p><\/p>\n<p>Cage.<b>read <\/b>(<i>fchannel, po\u010detak, len_data<\/i> ) \u2013 pro\u010ditati bajtni niz iz datoteke<\/p>\n<p><\/p>\n<p>Cage.<b>put_pages <\/b>( <i>fchannel<\/i> ) \u2013 \u201eizbacuje\u201c iz predmemorije na poslu\u017eitelj sve stranice navedenog kanala koje su modificirane. Koristi se u onim to\u010dkama algoritma kada je potrebno biti siguran da su sve operacije na kanalu fizi\u010dki spremljene u datoteci na poslu\u017eitelju.<\/p>\n<p><\/p>\n<p>Cage.<b>push_all<\/b> () \u2013 \u201eizbacuje\u201c iz predmemorije na poslu\u017eitelj sve stranice svih kanala za instancu klase Cage, koje su modificirane. Koristi se kada je potrebno biti siguran da su sve operacije na svim kanalima spremljene na poslu\u017eitelju.<\/p>\n<p>Izvor: <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\/hr\/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=\"hr_HR\" \/>\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\/hr\/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\udd47Sustav daljinskog pristupa datotekama Cage | ProHoster","description":"Namjena sustava Podr\u0161ka za daljinski pristup datotekama na ra\u010dunalima unutar mre\u017ee.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/sistema-udalennogo-fajlovogo-dostupa-cage","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/37019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=37019"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37019\/revisions"}],"predecessor-version":[{"id":159779,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37019\/revisions\/159779"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/27748"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=37019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=37019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=37019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}