{"id":80224,"date":"2020-05-04T13:42:20","date_gmt":"2020-05-04T11:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov"},"modified":"2020-05-04T13:42:20","modified_gmt":"2020-05-04T11:42:20","slug":"storacle-deczentralizovannoe-hranilishhe-fajlov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov","title":{"rendered":"Storacle \u2014 detsentraliseeritud failide salvestuskoht","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Storacle \u2014 detsentraliseeritud failide salvestuskoht\" src=\"\/wp-content\/uploads\/2020\/05\/333f7b998e00ce32367d97f7ccd05bef.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Enne alustan, pean j\u00e4tma <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495058\/\">lingi eelmisele artiklile<\/a><\/noindex>, et oleks selge, millest jutt.<\/p>\n<p><\/p>\n<p>Selles artiklis tahaksin k\u00e4sitleda kihti, mis vastutab failide salvestamise eest, ja kuidas seda saavad kasutada k\u00f5ik huvilised. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/storacle\/\">Storacle \u2014 iseseisev teek<\/a><\/noindex>, mis ei ole otseselt seotud muusika maailmaga. Failide salvestamine on v\u00f5imalik igasuguste failide jaoks.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Eelmises artiklis r\u00e4\u00e4kisin natuke \"koormusest\" <strong>ipfs<\/strong>, kuid see juhtus just seoses minu lahendatava \u00fclesandega. \u00dcldiselt pean seda projekti \u00e4gedaks. Lihtsalt mulle meeldib rohkem v\u00f5imalus luua erinevaid v\u00f5rgustikke erinevate \u00fclesannete jaoks. See aitab paremini struktureerida ja v\u00e4hendada koormust \u00fcksikutele s\u00f5lmedele ja kogu v\u00f5rgule. \u00dche projekti raames on isegi v\u00f5imalik vajadusel jagada v\u00f5rgustikku t\u00fckkideks mingite kriteeriumide p\u00f5hjal, v\u00e4hendades \u00fcldkoormust.<\/p>\n<p><\/p>\n<p>Nii et storacle kasutab mehhanismi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/spreadable\">spreadable<\/a><\/noindex> v\u00f5rgustiku korraldamiseks. Peamised omadused:<\/p>\n<p><\/p>\n<ul>\n<li>Failid saavad salvestada igast s\u00f5lmest.<\/li>\n<li>Failid salvestatakse t\u00e4ielikult, mitte plokkidena.<\/li>\n<li>Igal failil on oma ainulaadne hash sisu p\u00f5hjal edasiseks t\u00f6\u00f6tluseks.<\/li>\n<li>Failide kopeerimine suurema usaldusv\u00e4\u00e4rsuse tagamiseks<\/li>\n<li>\u00dche s\u00f5lme peal olevaid faile piirab ainult failis\u00fcsteem (on erandeid, mis j\u00e4rgnevas arutelus).<\/li>\n<li>V\u00f5rgus olevate failide arvu piirab spreadable v\u00f5imekus sarnaste s\u00f5lmede arvu osas, mis teises versioonis v\u00f5imaldavad t\u00f6\u00f6tada l\u00f5pmatu arvu s\u00f5lmedega (sellest r\u00e4\u00e4gime teises artiklis).<\/li>\n<\/ul>\n<p><\/p>\n<p>Lihtne n\u00e4ide, kuidas see programmide kaudu t\u00f6\u00f6tab:<\/p>\n<p><\/p>\n<p>Server:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">const  Node = require('storacle').Node;\n\n(async () =&gt; {\n  try {\n    const node = new Node({\n      port: 4000,\n      hostname: 'localhost'\n    });\n    await node.init();\n  }\n  catch(err) {\n    console.error(err.stack);\n    process.exit(1);\n  }\n})();<\/code><\/pre>\n<p><\/p>\n<p>Kliendi:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">const  Client = require('storacle').Client;\n\n(async () =&gt; {\n  try {\n    const client = new  Client({\n      address: 'localhost:4000'\n    });\n    await client.init();\n    const hash = await client.storeFile('.\/my-file');\n    const link = await client.getFileLink(hash);\n    await client.removeFile(hash);\n  }\n  catch(err) {\n    console.error(err.stack);\n    process.exit(1);\n  }\n})();<\/code><\/pre>\n<p><\/p>\n<p><strong>Vaade seest<\/strong><\/p>\n<p><\/p>\n<p>Mootori all pole midagi \u00fcleloomulikku. Teave failide arvu, nende kogusuuruse ja muude aspektide kohta hoitakse vahem\u00e4lu andmebaasis ja see uuendatakse failide kustutamisel ja lisamisel, seega pole sageli faili s\u00fcsteemi poole p\u00f6\u00f6rdumise vajadust. Erandiks on pr\u00fcgikoguja sissel\u00fclitamine, kui failide ringluse tagamiseks on vajalik mingi salvestusmahu saavutamine, mitte uute lisamise keelamine. Sel juhul tuleb l\u00e4bi vaadata salvestus ja suure arvu failidega (\u00fctleme, \u00fcle miljoni) t\u00f6\u00f6tamine v\u00f5ib p\u00f5hjustada m\u00e4rkimisv\u00e4\u00e4rset koormust. Parim on hoida v\u00e4hem faile ja k\u00e4ivitada rohkem s\u00f5lmi. Kui \"puhastaja\" on v\u00e4lja l\u00fclitatud, siis sellist probleemi pole.<\/p>\n<p><\/p>\n<p>Failide salvestus koosneb 256 kaustast ja 2 taseme s\u00fcgavusest. Failid asuvad teise taseme kaustades. Seega, kui on 1 miljon faili, on igas sellises kaustas umbes 62500 t\u00fckki (1000000 \/ sqrt(256)).<\/p>\n<p><\/p>\n<p>Kaustade nimed genereeritakse faili hash'i p\u00f5hjal, et saaks kiiresti juurde p\u00e4\u00e4seda, teades hash'i.<\/p>\n<p><\/p>\n<p>Selline struktuur valiti l\u00e4htuvalt paljusid erinevaid n\u00f5udmisi salvestusele: n\u00f5rkade failis\u00fcsteemide toetamine, kus \u00fches kaustas ei ole soovitatav hoida palju faile, kiire kaustade l\u00e4bivaatamine vajadusel jne. Teatud kuldne keskkoht.<\/p>\n<p><\/p>\n<p><strong>Vahem\u00e4lu<\/strong><\/p>\n<p><\/p>\n<p>Failide lisamisel ja ka nende saamisel salvestatakse vahem\u00e4lu faile linke.<br \/>\nSelle t\u00f5ttu ei pea sageli \u00fcle kogu v\u00f5rgu failide otsimise nimel ringi liikuma. See kiirendab linkide saamist ja v\u00e4hendab v\u00f5rgu koormust. Samuti toimub vahem\u00e4lestus l\u00e4bi http pealkirjade.<\/p>\n<p><\/p>\n<p><strong>Isomorfism<\/strong><\/p>\n<p><\/p>\n<p>Klienditarkvara on kirjutatud Javascriptis ja on isomorfne, seda saab kasutada otse brauserist.\u00a0<br \/>\nFaili saab \u00fcles laadida <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/storacle\/blob\/master\/dist\/storacle.client.js\">https:\/\/github.com\/ortexx\/storacle\/blob\/master\/dist\/storacle.client.js<\/a><\/noindex> nagu skripti ja p\u00e4\u00e4seda juurde <strong>window.ClientStoracle <\/strong>v\u00f5i importida l\u00e4bi koostes\u00fcsteemi jne.<\/p>\n<p><\/p>\n<p><strong>Edasi l\u00fckatud lingid<\/strong><\/p>\n<p><\/p>\n<p>Huvitav funktsioon on ka \"peatatud link\". See on link failile, mille saab koheselt k\u00e4tte, ja fail laaditakse alles siis, kui see on salvestuses leitud. See on v\u00e4ga mugav, kui n\u00e4iteks on vaja saidil n\u00e4idata m\u00f5ningaid pilte. Lihtsalt paneme src-ks peatatud lingi ja k\u00f5ik. Juhuseid, mida v\u00e4lja m\u00f5elda, on palju.<\/p>\n<p><\/p>\n<p><strong>Kliendi API<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>async <strong>Client.prototype.storeFile()<\/strong> \u2014 faili salvestamine<\/li>\n<li>async <strong>Client.prototype.getFileLink()<\/strong> \u2014 faili otsese lingi saamine<\/li>\n<li>async <strong>Client.prototype.getFileLinks()<\/strong> \u2014 saada otse\u00fchenduste loend faili jaoks k\u00f5igilt s\u00f5lmedelt, kus see olemas on<\/li>\n<li>async <strong>Client.prototype.getFileToBuffer()<\/strong> \u2014 saada fail p\u00e4ntesse<\/li>\n<li>async <strong>Client.prototype.getFileToPath()<\/strong> \u2014 saada fail failis\u00fcsteemi<\/li>\n<li>async <strong>Client.prototype.getFileToBlob()<\/strong> \u2014 saada fail blob'ina (brauseri versiooni jaoks)<\/li>\n<li>async <strong>Client.prototype.removeFile()<\/strong> \u2014 eemaldada fail<\/li>\n<li><strong>Client.prototype.createRequestedFileLink()<\/strong> \u2014 luua viivitatud link<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Failide eksportimine teisele serverile<\/strong><\/p>\n<p><\/p>\n<p>Failide teisaldamiseks teisele s\u00f5lmele saab:<\/p>\n<p><\/p>\n<ul>\n<li>Lihtsalt kopeerida kogu salvestusse m\u00f5eldud kaust koos seadistustega. (tulevikus see ei pruugi t\u00f6\u00f6tada)<\/li>\n<li>Kopeerida ainult failide kaust. Kuid sel juhul tuleb \u00fche korra k\u00e4ivitada funktsioon <strong>node.normalizeFilesInfo()<\/strong>, et \u00fcmber arvutada k\u00f5ik andmed ja sisestada need andmebaasi.<\/li>\n<li>Kasutage funktsiooni <strong>node.exportFiles()<\/strong>, mis alustab failide kopeerimist.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>S\u00f5lme p\u00f5hiseaded<\/strong><br \/>\nSalvestuss\u00f5lme k\u00e4ivitamisel saab m\u00e4\u00e4rata k\u00f5ik vajalikud seaded.<br \/>\nKirjeldan k\u00f5ige olulisemaid, \u00fclej\u00e4\u00e4nud leiate GitHubist.<\/p>\n<p><\/p>\n<ul>\n<li><strong>storage.dataSize<\/strong> \u2014 failide kausta suurus<\/li>\n<li><strong>storage.tempSize<\/strong> \u2014 ajutise kausta suurus<\/li>\n<li><strong>storage.autoCleanSize<\/strong> \u2014 minimaalne salvestusruumi suurus, mida tuleb hoida. Kui see parameeter on m\u00e4\u00e4ratud, siis kui ruum hakkab otsa saama, eemaldatakse k\u00f5ige v\u00e4hem kasutatavad failid.<\/li>\n<li><strong>file.maxSize<\/strong> \u2014 faili maksimaalne suurus<\/li>\n<li><strong>file.minSize<\/strong> \u2014 faili minimaalne suurus<\/li>\n<li><strong>file.preferredDuplicates<\/strong> \u2014 eelistatud failide koopiaarv v\u00f5rgus<\/li>\n<li><strong>file.mimeWhitelist<\/strong> \u2014 lubatud faili t\u00fc\u00fcbid<\/li>\n<li><strong>file.mimeBlacklist<\/strong> \u2014 keelatud faili t\u00fc\u00fcbid<\/li>\n<li><strong>file.extWhitelist<\/strong> \u2014 lubatud faili laiendid<\/li>\n<li><strong>file.extBlacklist<\/strong> \u2014 keelatud faili laiendid<\/li>\n<li><strong>file.linkCache<\/strong> \u2014 erinevad linkide vahem\u00e4lu seaded<\/li>\n<\/ul>\n<p><\/p>\n<p>Peaaegu k\u00f5ik parameetrid, mis on seotud suurustega, v\u00f5ivad olla m\u00e4\u00e4ratud nii absoluutsetes kui ka suhtelistes m\u00f5\u00f5t\u00fchikutes.<\/p>\n<p><\/p>\n<p><strong>T\u00f6\u00f6 k\u00e4surealt<\/strong><br \/>\nRaamatukogu saab kasutada k\u00e4surealt. Selleks tuleb see globaalset installida: <strong>npm i -g storacle<\/strong>. P\u00e4rast seda saab vajalikke tegevusi k\u00e4ivitada projektikaustas, kus on s\u00f5lm. N\u00e4iteks, <strong>storacle -a storeFile -f .\/file.txt -c .\/config.js<\/strong>, et lisada fail. K\u00f5iki tegevusi saab leida <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/storacle\/blob\/master\/bin\/actions.js\">https:\/\/github.com\/ortexx\/storacle\/blob\/master\/bin\/actions.js<\/a><\/noindex><\/p>\n<p><\/p>\n<p><strong>Miks see v\u00f5iks sul vaja minna<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Kui soovid luua m\u00f5nda detsentraliseeritud projekti, kus on plaanis salvestada ja t\u00f6\u00f6tada failidega mugaval viisil. N\u00e4iteks projekt muusika osas, mida on kirjeldatud artikli alguses, kasutab <strong>storacle<\/strong>.<\/li>\n<li>Kui t\u00f6\u00f6tad muude projektide kallal, kus on vajalik failide hajutatud salvestamine, saad h\u00f5lpsasti luua oma privaatv\u00f5rgu, paindlikult konfigureerida s\u00f5lmi ja lisada uusi, kui see on vajalik.<\/li>\n<li>Kui vajad lihtsalt kohta, kus salvestada oma saidi faile ja ei viitsi k\u00f5ike ise kirjutada, sobib see teek v\u00f5ib-olla paremini kui teised sinu jaoks.<\/li>\n<li>Kui sul on projekt, kus t\u00f6\u00f6tad failidega, kuid soovid k\u00f5ik toimingud teha brauserist, saad v\u00e4ltida serverikoodi kirjutamist.<\/li>\n<\/ul>\n<p><\/p>\n<p>Minu kontaktid:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/ortex\">@ortex<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"mailto:mywebstreet@gmail.com\">mywebstreet@gmail.com<\/a><\/noindex><\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/499954\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u043d\u0443, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e \u0447\u0435\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0440\u0435\u0447\u044c. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u043b\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u043a\u0430\u043a \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043e \u043b\u044e\u0431\u044b\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c. Storacle \u2014 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0435\u0442. \u041c\u043e\u0436\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043b\u044e\u0431\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80225,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80224","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.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u043d\u0443, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.\" \/>\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\/et\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\udd47Storacle \u2014 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u043d\u0443, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov\" \/>\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=\"2020-05-04T11:42:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-04T11:42: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\udd47Storacle \u2014 detsentraliseeritud failide salvestus | ProHoster","description":"Enne kui alustan, pean j\u00e4tma.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\udd47Storacle \u2014 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 | ProHoster","og:description":"\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u043d\u0443, \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov","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":"2020-05-04T11:42:20+00:00","article:modified_time":"2020-05-04T11:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80224","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:22:48","updated":"2022-09-27 20:25:26","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/80224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=80224"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/80224\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/80225"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=80224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=80224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=80224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}