{"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\/de\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov","title":{"rendered":"Storacle \u2013 ein dezentrales Dateispeicher-System","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Storacle \u2013 ein dezentrales Dateispeicher-System\" src=\"\/wp-content\/uploads\/2020\/05\/333f7b998e00ce32367d97f7ccd05bef.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bevor ich beginne, m\u00f6chte ich <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495058\/\">einen Link zu dem vorherigen Artikel<\/a><\/noindex>, um klarzustellen, worum es genau geht.<\/p>\n<p><\/p>\n<p>In diesem Artikel m\u00f6chte ich die Schicht besprechen, die f\u00fcr die Dateispeicherung verantwortlich ist und wie sie von jedem genutzt werden kann. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/storacle\/\">Storacle ist eine eigenst\u00e4ndige Bibliothek<\/a><\/noindex>, die direkt nichts mit Musik zu tun hat. Es k\u00f6nnen beliebige Dateien gespeichert werden.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Im vorherigen Artikel habe ich ein wenig \"kritisiert\" <strong>ipfs<\/strong>, aber das geschah genau im Kontext der von mir gel\u00f6sten Aufgabe. Insgesamt halte ich dieses Projekt f\u00fcr gro\u00dfartig. Mir gef\u00e4llt einfach die M\u00f6glichkeit, verschiedene Netzwerke f\u00fcr unterschiedliche Aufgaben zu erstellen. Das erm\u00f6glicht eine bessere Strukturorganisation und reduziert die Last auf einzelnen Knoten und dem Netzwerk insgesamt. Man kann sogar innerhalb eines bestimmten Projekts, falls n\u00f6tig, das Netzwerk nach bestimmten Kriterien in Teile zerlegen, um die allgemeine Last zu senken.<\/p>\n<p><\/p>\n<p>Also verwendet storacle einen Mechanismus <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ortexx\/spreadable\">spreadable<\/a><\/noindex> zur Organisation des Netzwerks. Die Hauptmerkmale sind:<\/p>\n<p><\/p>\n<ul>\n<li>Dateien k\u00f6nnen \u00fcber jeden Knoten in den Speicher hinzugef\u00fcgt werden.<\/li>\n<li>Dateien werden vollst\u00e4ndig gespeichert, nicht in Bl\u00f6cken.<\/li>\n<li>Jede Datei hat ihren eigenen einzigartigen Hash basierend auf dem Inhalt f\u00fcr die weitere Bearbeitung.<\/li>\n<li>Dateien k\u00f6nnen zur Erh\u00f6hung der Zuverl\u00e4ssigkeit dupliziert werden<\/li>\n<li>Die Anzahl der Dateien auf einem Knoten ist nur durch das Dateisystem begrenzt (es gibt eine Ausnahme, die weiter unten erl\u00e4utert wird)<\/li>\n<li>Die Anzahl der Dateien im Netzwerk ist durch die M\u00f6glichkeiten von spreadable hinsichtlich der zul\u00e4ssigen Knoten im Netzwerk begrenzt, die in der zweiten Version die Arbeit mit einer unbegrenzten Anzahl von Knoten erm\u00f6glichen werden (dar\u00fcber in einem anderen Artikel)<\/li>\n<\/ul>\n<p><\/p>\n<p>Ein einfaches Beispiel, wie das \u00fcberhaupt aus dem Programm funktioniert:<\/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>Client:<\/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>Ein Blick hinter die Kulissen<\/strong><\/p>\n<p><\/p>\n<p>Unter der Haube gibt es nichts \u00dcbernat\u00fcrliches. Informationen \u00fcber die Anzahl der Dateien, deren Gesamtspeichergr\u00f6\u00dfe und andere Aspekte werden in einer In-Memory-Datenbank gespeichert und bei der L\u00f6schung und Hinzuf\u00fcgung von Dateien aktualisiert, sodass h\u00e4ufige Zugriffe auf das Dateisystem nicht erforderlich sind. Eine Ausnahme bildet die Aktivierung des Garbage Collectors, wenn eine Zirkulation der Dateien bei Erreichen bestimmter Speicherkapazit\u00e4ten erforderlich ist, anstatt die Hinzuf\u00fcgung neuer Dateien zu verbieten. In diesem Fall muss das Speicherobjekt durchlaufen werden, und die Arbeit mit einer gro\u00dfen Anzahl von Dateien (&gt; eine Million, sagen wir) kann zu erheblichen Belastungen f\u00fchren. Es ist besser, weniger Dateien zu speichern und mehr Knoten zu starten. Wenn der \"Reiniger\" deaktiviert ist, besteht dieses Problem nicht.<\/p>\n<p><\/p>\n<p>Der Dateispeicher besteht aus 256 Ordnern und 2 Ebenen der Verschachtelung. Dateien werden in den Ordnern der zweiten Ebene gespeichert. Bei 1 Million Dateien w\u00e4ren in jedem dieser Ordner etwa 62500 Dateien vorhanden (1000000 \/ sqrt(256)).<\/p>\n<p><\/p>\n<p>Die Namen der Ordner werden aus dem Hash der Datei generiert, um schnellen Zugriff zu erm\u00f6glichen, wenn der Hash bekannt ist.<\/p>\n<p><\/p>\n<p>Diese Struktur wurde auf der Grundlage einer Vielzahl unterschiedlicher Anforderungen an den Speicher gew\u00e4hlt: Unterst\u00fctzung f\u00fcr schwache Dateisysteme, in denen nicht viele Dateien in einem Ordner vorhanden sein sollten, schneller Zugriff auf alle Ordner bei Bedarf usw. Eine Art goldene Mitte.<\/p>\n<p><\/p>\n<p><strong>, das durch Pufferpools bereitgestellt wird.<\/strong><\/p>\n<p><\/p>\n<p>Beim Hinzuf\u00fcgen von Dateien sowie beim Abrufen werden Links zu Dateien im Cache gespeichert.<br \/>\nDank dessen ist es h\u00e4ufig nicht erforderlich, das gesamte Netzwerk nach einer Datei zu durchsuchen. Dies beschleunigt den Erhalt von Links und verringert die Netzwerkbelastung. Das Caching erfolgt auch \u00fcber HTTP-Header.<\/p>\n<p><\/p>\n<p><strong>Isomorphismus<\/strong><\/p>\n<p><\/p>\n<p>Der Client ist in JavaScript geschrieben und ist isomorph, er kann direkt aus dem Browser verwendet werden.\u00a0<br \/>\nEs kann eine Datei <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> als Skript hochgeladen werden, um Zugriff auf <strong>window.ClientStoracle <\/strong>zu erhalten oder \u00fcber ein Build-System zu importieren usw.<\/p>\n<p><\/p>\n<p><strong>Verz\u00f6gerte Links<\/strong><\/p>\n<p><\/p>\n<p>Ein interessantes Feature ist auch der \"verz\u00f6gerte Link\". Dies ist ein Link zu einer Datei, den man synchron und sofort abrufen kann, w\u00e4hrend die Datei erst geladen wird, sobald sie im Speicher gefunden wird. Das ist sehr praktisch, wenn man beispielsweise Bilder auf der Website anzeigen m\u00f6chte. Man f\u00fcgt einfach im src den verz\u00f6gerten Link ein und das war's. Es gibt viele Anwendungsf\u00e4lle, die man sich \u00fcberlegen kann.<\/p>\n<p><\/p>\n<p><strong>Client-API<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>async <strong>Client.prototype.storeFile()<\/strong> \u2014 Datei speichern<\/li>\n<li>async <strong>Client.prototype.getFileLink()<\/strong> \u2014 direkten Link zur Datei abrufen<\/li>\n<li>async <strong>Client.prototype.getFileLinks()<\/strong> \u2014 Liste der direkten Links zur Datei von allen Knoten abrufen, an denen sie vorhanden ist<\/li>\n<li>async <strong>Client.prototype.getFileToBuffer()<\/strong> \u2014 Datei im Puffer abrufen<\/li>\n<li>async <strong>Client.prototype.getFileToPath()<\/strong> \u2014 Datei im Dateisystem abrufen<\/li>\n<li>async <strong>Client.prototype.getFileToBlob()<\/strong> \u2014 Datei als Blob abrufen (f\u00fcr die Browser-Version)<\/li>\n<li>async <strong>Client.prototype.removeFile()<\/strong> \u2014 Datei l\u00f6schen<\/li>\n<li><strong>Client.prototype.createRequestedFileLink()<\/strong> \u2014 verz\u00f6gerten Link erstellen<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Dateiexport auf einen anderen Server<\/strong><\/p>\n<p><\/p>\n<p>Um Dateien auf einen anderen Knoten zu \u00fcbertragen, k\u00f6nnen Sie:<\/p>\n<p><\/p>\n<ul>\n<li>Einfach den gesamten Speicherordner mitsamt den Einstellungen kopieren. (In Zukunft k\u00f6nnte das nicht funktionieren)<\/li>\n<li>Nur den Ordner mit den Dateien kopieren. In diesem Fall muss jedoch die Funktion <strong>node.normalizeFilesInfo()<\/strong>, einmalig ausgef\u00fchrt werden, um alle Daten neu zu berechnen und in die Datenbank einzugeben.<\/li>\n<li>Die Funktion <strong>node.exportFiles()<\/strong>, die den Datei\u00fcbertrag startet.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>Haupteinstellungen des Knotens<\/strong><br \/>\nBeim Starten des Speicher-Knotens k\u00f6nnen alle erforderlichen Einstellungen angegeben werden.<br \/>\nIch werde die wichtigsten beschreiben, das andere kann auf GitHub gefunden werden.<\/p>\n<p><\/p>\n<ul>\n<li><strong>storage.dataSize<\/strong> \u2014 Gr\u00f6\u00dfe des Ordners mit Dateien<\/li>\n<li><strong>storage.tempSize<\/strong> \u2014 Gr\u00f6\u00dfe des tempor\u00e4ren Ordners<\/li>\n<li><strong>storage.autoCleanSize<\/strong> \u2014 die minimale Speicherkapazit\u00e4t, die erhalten werden muss. Wenn dieser Parameter angegeben ist, werden die am wenigsten genutzten Dateien gel\u00f6scht, sobald der Speicherplatz knapp wird.<\/li>\n<li><strong>file.maxSize<\/strong> \u2014 die maximale Dateigr\u00f6\u00dfe<\/li>\n<li><strong>file.minSize<\/strong> \u2014 die minimale Dateigr\u00f6\u00dfe<\/li>\n<li><strong>file.preferredDuplicates<\/strong> \u2014 die bevorzugte Anzahl von Datei-Duplikaten im Netzwerk<\/li>\n<li><strong>file.mimeWhitelist<\/strong> \u2014 zul\u00e4ssige Dateitypen<\/li>\n<li><strong>file.mimeBlacklist<\/strong> \u2014 unzul\u00e4ssige Dateitypen<\/li>\n<li><strong>file.extWhitelist<\/strong> \u2014 zul\u00e4ssige Dateiendungen<\/li>\n<li><strong>file.extBlacklist<\/strong> \u2014 unzul\u00e4ssige Dateiendungen<\/li>\n<li><strong>file.linkCache<\/strong> \u2014 verschiedene Link-Cache-Einstellungen<\/li>\n<\/ul>\n<p><\/p>\n<p>Fast alle mit Gr\u00f6\u00dfen verbundenen Parameter k\u00f6nnen sowohl in absoluten als auch in relativen Gr\u00f6\u00dfen angegeben werden.<\/p>\n<p><\/p>\n<p><strong>Arbeiten \u00fcber die Befehlszeile<\/strong><br \/>\nDie Bibliothek kann \u00fcber die Befehlszeile verwendet werden. Dazu muss sie global installiert werden: <strong>npm i -g storacle<\/strong>. Danach k\u00f6nnen die erforderlichen Aktionen aus dem Verzeichnis mit dem Projekt, wo der Knoten ist, ausgef\u00fchrt werden. Zum Beispiel, <strong>storacle -a storeFile -f .\/file.txt -c .\/config.js<\/strong>, um eine Datei hinzuzuf\u00fcgen. Alle Aktionen finden Sie in <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>Warum k\u00f6nnte das f\u00fcr dich n\u00f6tig sein<\/strong><\/p>\n<p><\/p>\n<ul>\n<li>Wenn du ein dezentrales Projekt erstellen m\u00f6chtest, in dem du Dateien auf bequeme Weise speichern und bearbeiten kannst. Zum Beispiel verwendet das im Artikel eingangs beschriebene Musikprojekt <strong>storacle<\/strong>.<\/li>\n<li>Wenn du an anderen Projekten arbeitest, in denen Dateien verteilt gespeichert werden m\u00fcssen. Du kannst dein eigenes geschlossenes Netzwerk problemlos aufbauen, Knoten flexibel konfigurieren und neue hinzuf\u00fcgen, wenn es n\u00f6tig ist.<\/li>\n<li>Wenn du einfach einen Ort zum Speichern der Dateien deiner Webseite ben\u00f6tigst und es dir zu m\u00fchsam ist, alles selbst zu schreiben. Vielleicht ist diese Bibliothek in deinem Fall besser geeignet.<\/li>\n<li>Wenn du ein Projekt hast, bei dem du mit Dateien arbeitest, aber alle Manipulationen aus dem Browser heraus durchf\u00fchren m\u00f6chtest. Du kannst das Schreiben von Servercode vermeiden.<\/li>\n<\/ul>\n<p><\/p>\n<p>Meine Kontakte:<\/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>Quelle: <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 4.9.10 - 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 \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\" \/>\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\/de\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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 dezentrales Dateispeicher | ProHoster","description":"Bevor ich beginne, m\u00f6chte ich auf den vorherigen Artikel verweisen, um zu kl\u00e4ren, worum es genau geht. In diesem Artikel m\u00f6chte ich die Schicht besprechen, die f\u00fcr die Speicherung von Dateien zust\u00e4ndig ist, und wie dies von jedermann genutzt werden kann. Storacle ist eine eigenst\u00e4ndige Bibliothek, es gibt keinen direkten Zusammenhang mit Musik. Es ist m\u00f6glich, die Speicherung beliebiger Dateien zu organisieren. Im vorherigen Artikel habe ich","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/storacle-deczentralizovannoe-hranilishhe-fajlov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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 \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","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/80224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=80224"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/80224\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/80225"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=80224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=80224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=80224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}