{"id":35687,"date":"2019-10-31T22:05:46","date_gmt":"2019-10-31T19:05:46","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux\/"},"modified":"2019-10-31T22:05:46","modified_gmt":"2019-10-31T19:05:46","slug":"kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","title":{"rendered":"Kategorie zamiast katalog\u00f3w, czyli semantyczny system plik\u00f3w dla Linuksa","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Klasyfikacja danych to sama w sobie interesuj\u0105cy temat bada\u0144. Lubi\u0119 kolekcjonowa\u0107 informacje, kt\u00f3re wydaj\u0105 si\u0119 potrzebne, i zawsze stara\u0142em si\u0119 tworzy\u0107 logiczne hierarchie katalog\u00f3w dla swoich plik\u00f3w. Pewnej nocy mia\u0142em sen o pi\u0119knym i wygodnym programie do przypisywania tag\u00f3w plikom, postanowi\u0142em, \u017ce nie mog\u0119 d\u0142u\u017cej tak \u017cy\u0107.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"problema-ierarhicheskih-faylovyh-sistem\">Problem hierarchicznych system\u00f3w plik\u00f3w<\/h1>\n<p><\/p>\n<p>U\u017cytkownicy cz\u0119sto napotykaj\u0105 problem wyboru miejsca na zapisanie kolejnego nowego pliku oraz problem poszukiwania w\u0142asnych plik\u00f3w (czasami nazwy plik\u00f3w w og\u00f3le nie s\u0105 przystosowane do zapami\u0119tania przez cz\u0142owieka).<\/p>\n<p><\/p>\n<p>Rozwi\u0105zaniem mog\u0105 by\u0107 semantyczne systemy plik\u00f3w, kt\u00f3re zazwyczaj stanowi\u0105 nak\u0142adk\u0119 na tradycyjny system plik\u00f3w. W nich katalogi zast\u0119powane s\u0105 semantycznymi atrybutami, zwanymi tak\u017ce tagami, kategoriami oraz metadanymi. B\u0119d\u0119 cz\u0119\u015bciej u\u017cywa\u0142 terminu \u201ekategoria\u201d, poniewa\u017c w kontek\u015bcie system\u00f3w plik\u00f3w s\u0142owo \u201etag\u201d czasami brzmi dziwnie, zw\u0142aszcza gdy pojawiaj\u0105 si\u0119 \u201epodtagi\u201d i \u201ealiasy tag\u00f3w\u201d.<\/p>\n<p><\/p>\n<p>Przypisanie kategorii plikom w du\u017cej mierze eliminuje problemy z miejscem przechowywania i wyszukiwaniem pliku: je\u015bli pami\u0119tasz (lub przypuszczasz) chocia\u017c jedn\u0105 z przypisanych do pliku kategorii, plik nigdy nie zniknie z pola widzenia.<\/p>\n<p><\/p>\n<p>Wcze\u015bniej na Habrze niejednokrotnie poruszano ten temat (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/27581\/\">raz<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/337202\/\">dwa<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/374465\/\">trzy<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/81352\/\">cztery<\/a><\/noindex> i inni), tutaj opisuj\u0119 swoje rozwi\u0105zanie.<\/p>\n<p><\/p>\n<h1 id=\"put-k-realizacii\">Droga do realizacji<\/h1>\n<p><\/p>\n<p>Tu\u017c po wspomnianym \u015bnie opisa\u0142em w zeszycie interfejs wiersza polece\u0144, kt\u00f3ry zapewnia\u0142by niezb\u0119dn\u0105 prac\u0119 z kategoriami. Zdecydowa\u0142em wtedy, \u017ce w ci\u0105gu tygodnia lub dw\u00f3ch mog\u0119 napisa\u0107 prototyp, u\u017cywaj\u0105c Pythona lub Basha, a potem trzeba b\u0119dzie przeprowadzi\u0107 prace nad stworzeniem graficznego interfejsu w Qt lub GTK. Rzeczywisto\u015b\u0107, jak zawsze, okaza\u0142a si\u0119 znacznie surowsza, a rozw\u00f3j si\u0119 przed\u0142u\u017cy\u0142.<\/p>\n<p><\/p>\n<p>Pocz\u0105tkowy pomys\u0142 polega\u0142 na tym, aby przede wszystkim stworzy\u0107 program z wygodnym i zwi\u0119z\u0142ym interfejsem wiersza polece\u0144, kt\u00f3ry b\u0119dzie tworzy\u0107, usuwa\u0107 kategorie, przypisywa\u0107 kategorie plikom i usuwa\u0107 kategorie z plik\u00f3w. Program nazwa\u0142em <em>vitis<\/em>.<\/p>\n<p><\/p>\n<p>Pierwsza pr\u00f3ba stworzenia <em>vitis<\/em> Nie zako\u0144czy\u0142o si\u0119 niczym, poniewa\u017c du\u017co czasu zacz\u0119\u0142o mi umyka\u0107 na prac\u0119 i studia. Drugie podej\u015bcie by\u0142o ju\u017c czym\u015b: uda\u0142o mi si\u0119 zako\u0144czy\u0107 planowany projekt na magisterk\u0119 i nawet stworzy\u0107 prototyp pow\u0142oki GTK. Ale ta wersja okaza\u0142a si\u0119 tak ma\u0142o niezawodna i niewygodna, \u017ce musia\u0142em wiele rzeczy przemy\u015ble\u0107 na nowo.<\/p>\n<p><\/p>\n<p>W trzeciej wersji korzysta\u0142em sam przez d\u0142ugi czas, przypisuj\u0105c do kategorii kilka tysi\u0119cy swoich plik\u00f3w. W tym pomog\u0142o w du\u017cej mierze wdro\u017cone autouzupe\u0142nianie bash. Niemniej jednak niekt\u00f3re problemy, takie jak brak automatycznych kategorii i mo\u017cliwo\u015b\u0107 przechowywania plik\u00f3w o tej samej nazwie, wci\u0105\u017c pozostawa\u0142y, a program zaczyna\u0142 si\u0119 dusi\u0107 pod w\u0142asn\u0105 z\u0142o\u017cono\u015bci\u0105. Tak doszed\u0142em do konieczno\u015bci rozwi\u0105zywania problem\u00f3w zwi\u0105zanych z rozwojem skomplikowanego oprogramowania: spisanie szczeg\u00f3\u0142owych wymaga\u0144, opracowanie systemu testowania funkcjonalnego, studiowanie instrukcji dotycz\u0105cych pakowania i wiele innych. Teraz uda\u0142o mi si\u0119 osi\u0105gn\u0105\u0107 zamierzony cel, wi\u0119c to skromne dzie\u0142o mo\u017ce by\u0107 przedstawione wolnej spo\u0142eczno\u015bci. Tak specyficzne zarz\u0105dzanie plikami, jak zarz\u0105dzanie poprzez koncepcj\u0119 kategorii, porusza niespodziewane pytania i problemy, a ich rozwi\u0105zywanie. <em>vitis<\/em> spowodowa\u0142 wok\u00f3\u0142 siebie jeszcze pi\u0119\u0107 projekt\u00f3w, z niekt\u00f3rymi z nich zostan\u0105 om\u00f3wione w artykule. Do dzi\u015b <em>vitis<\/em> nie zdoby\u0142em graficznego interfejsu, ale wygoda korzystania z kategorii plik\u00f3w z poziomu wiersza polece\u0144 ju\u017c przewy\u017csza dla mnie wszelkie zalety zwyk\u0142ego graficznego mened\u017cera plik\u00f3w.<\/p>\n<p><\/p>\n<h1 id=\"primery-ispolzovaniya\">Przyk\u0142ady u\u017cycia<\/h1>\n<p><\/p>\n<p>Zacznijmy od prostego \u2014 stw\u00f3rzmy kategori\u0119:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Muzyka<\/code><\/pre>\n<p><\/p>\n<p>Dodajmy do niej dla przyk\u0142adu jak\u0105\u015b kompozycj\u0119:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Muzyka -f \"The Ink Spots - I Don't Want To Set The World On Fire.mp3\"<\/code><\/pre>\n<p><\/p>\n<p>Zawarto\u015b\u0107 kategorii \u201eMuzyka\u201d mo\u017cna wy\u015bwietli\u0107 za pomoc\u0105 podkomendy \u201eshow\u201d:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Muzyka<\/code><\/pre>\n<p><\/p>\n<p>Mo\u017cna j\u0105 odtworzy\u0107 za pomoc\u0105 podkomendy \u201eopen\u201d<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Muzyka<\/code><\/pre>\n<p><\/p>\n<p>Poniewa\u017c w kategorii \u201eMuzyka\u201d mamy tylko jeden plik, to tylko on zostanie uruchomiony. W celu otwierania plik\u00f3w w programach domy\u015blnych stworzy\u0142em osobne narz\u0119dzie <em>vts-fs-open<\/em> (standardowe narz\u0119dzia typu xdg-open lub mimeopen nie spe\u0142nia\u0142y moich oczekiwa\u0144 z r\u00f3\u017cnych powod\u00f3w; ale je\u015bli co\u015b, w ustawieniach mo\u017cesz wskaza\u0107 inne narz\u0119dzie do og\u00f3lnego otwierania plik\u00f3w). To narz\u0119dzie dobrze dzia\u0142a na r\u00f3\u017cnych dystrybucjach z r\u00f3\u017cnymi \u015brodowiskami graficznymi, wi\u0119c polecam zainstalowa\u0107 je razem z vitis.<\/p>\n<p><\/p>\n<p>Mo\u017cna r\u00f3wnie\u017c bezpo\u015brednio wskaza\u0107 program do otwierania plik\u00f3w:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Muzyka --app qmmp<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorie zamiast katalog\u00f3w, czyli semantyczny system plik\u00f3w dla Linuksa\" src=\"\/wp-content\/uploads\/2019\/06\/4823ff69e03b2e8b9986eedfe0604a9d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Stworzymy jeszcze inne kategorie i dodamy pliki za pomoc\u0105 \u201eassign\u201d. Je\u015bli pliki przypisywane s\u0105 do nieistniej\u0105cych jeszcze kategorii, zostanie wystosowane zapytanie o ich utworzenie. Mo\u017cna unikn\u0105\u0107 zb\u0119dnego zapytania, u\u017cywaj\u0105c flagi \u2014yes.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Programowanie R -f \"Wprowadzenie do R.pdf\" \"Pakiet statystyczny R: teoria prawdopodobie\u0144stwa i matstatystyka.pdf\" --yes<\/code><\/pre>\n<p><\/p>\n<p>Teraz chcemy doda\u0107 plikowi \u201eStatystyczny pakiet R: teoria prawdopodobie\u0144stwa i statystyka matematyczna.pdf\u201d kategori\u0119 \u201eMatematyka\u201d. Wiemy, \u017ce ten plik ju\u017c ma kategori\u0119 \u201eR\u201d, dlatego mo\u017cemy wykorzysta\u0107 \u015bcie\u017ck\u0119 kategorii z systemu Vitis:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematyka -v \"R\/Pakiet statystyczny R: teoria prawdopodobie\u0144stwa i matstatystyka.pdf\"<\/code><\/pre>\n<p><\/p>\n<p>Na szcz\u0119\u015bcie autouzupe\u0142nianie bash pozwoli to zrobi\u0107 \u0142atwo.<\/p>\n<p><\/p>\n<p>Sprawd\u017amy, co nam wysz\u0142o, u\u017cywaj\u0105c flagi \u2014categories, aby zobaczy\u0107 list\u0119 kategorii dla ka\u017cdego pliku:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorie zamiast katalog\u00f3w, czyli semantyczny system plik\u00f3w dla Linuksa\" src=\"\/wp-content\/uploads\/2019\/06\/7bbaf561e6efe407ec8dfcda3a89c3b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zauwa\u017c, \u017ce plikom przypisano r\u00f3wnie\u017c automatyczne kategorie wed\u0142ug formatu, typu (\u0142\u0105czenie format\u00f3w) i rozszerzenia plik\u00f3w. Te kategorie mo\u017cna w razie potrzeby wy\u0142\u0105czy\u0107. W p\u00f3\u017aniejszym czasie na pewno zrobi\u0119 lokalizacj\u0119 ich nazw.<\/p>\n<p><\/p>\n<p>Dodajmy dla r\u00f3\u017cnorodno\u015bci co\u015b jeszcze do \u201eMatematyki\u201d:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematyka -f \"Analiza matematyczna - 1984.pdf\" Perelman_Zajmuj\u0105ca_matematyka_1927.djvu <\/code><\/pre>\n<p><\/p>\n<p>A teraz zaczyna si\u0119 co\u015b ciekawego. Zamiast kategorii mo\u017cna pisa\u0107 wyra\u017cenia z operacjami \u0142\u0105czenia, przeci\u0119cia i r\u00f3\u017cnicowania, czyli u\u017cywa\u0107 operacji na zbiorach. Na przyk\u0142ad przeci\u0119cie \u201eMatematyki\u201d z \u201eR\u201d da w wyniku jeden plik.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R i: Matematyka<\/code><\/pre>\n<p><\/p>\n<p>Wy\u0142\u0105czmy z \u201eMatematyki\u201d wzmianki o j\u0119zyku \u201eR\u201d:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Matematyka R #lub vitis show Matematyka c: R<\/code><\/pre>\n<p><\/p>\n<p>Mo\u017cemy bez celu po\u0142\u0105czy\u0107 muzyk\u0119 i j\u0119zyk R:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Muzyka u: R<\/code><\/pre>\n<p><\/p>\n<p>Flaga -n pozwala \u201ewyci\u0105ga\u0107\u201d z wyniku zapytania potrzebne pliki wed\u0142ug numer\u00f3w i\/lub zakres\u00f3w, na przyk\u0142ad, <code>-n 3-7<\/code>, lub co\u015b bardziej skomplikowanego: <code>-n 1,5,8-10,13<\/code>. Cz\u0119sto jest to przydatne z podkomend\u0105 open, kt\u00f3ra pozwala otwiera\u0107 odpowiednie pliki z listy.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorie zamiast katalog\u00f3w, czyli semantyczny system plik\u00f3w dla Linuksa\" src=\"\/wp-content\/uploads\/2019\/06\/5e9181a711a88368b38d8cd2f2e628f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Chocia\u017c odchodzimy od u\u017cywania zwyk\u0142ej hierarchii katalog\u00f3w, cz\u0119sto przydatne jest posiadanie podkategorii. Stw\u00f3rzmy podkategori\u0119 \u201eStatystyka\u201d w kategorii \u201eMatematyka\u201d i dodajmy t\u0119 kategori\u0119 do odpowiedniego pliku:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Matematyka\/Statystyka\n\nvitis assign Matematyka\/Statystyka -v \"R\/Wprowadzenie do R.pdf\"\n\nvitis show Matematyka --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorie zamiast katalog\u00f3w, czyli semantyczny system plik\u00f3w dla Linuksa\" src=\"\/wp-content\/uploads\/2019\/06\/0bb3381f35cfa2fce381ecc66a62701f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mo\u017cemy zobaczy\u0107, \u017ce ten plik teraz ma kategori\u0119 \u201eMatematyka\/Statystyka\u201d zamiast \u201eMatematyka\u201d (zbyteczne odniesienia s\u0105 \u015bledzone).<\/p>\n<p><\/p>\n<p>Odwo\u0142ywanie si\u0119 do pe\u0142nej \u015bcie\u017cki mo\u017ce by\u0107 niewygodne, stw\u00f3rzmy \"globalny\" pseudonim:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematyka\/Statystyka -a Statystyka\n\nvitis show Statystyka<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorie zamiast katalog\u00f3w, czyli semantyczny system plik\u00f3w dla Linuksa\" src=\"\/wp-content\/uploads\/2019\/06\/619c27802802fd93594d3c0050dd78e8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"ne-tolko-obychnye-fayly\">Nie tylko zwyk\u0142e pliki<\/h2>\n<p><\/p>\n<h3 id=\"internet-ssylki\">Linki internetowe<\/h3>\n<p><\/p>\n<p>Dla ujednolicenia przechowywania wszelkich informacji by\u0142oby pomocne, co najmniej, kategoryzowanie link\u00f3w do zasob\u00f3w internetowych. I to jest mo\u017cliwe:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Habr KolorAnomalia -i https:\/\/habr.com\/ru\/company\/sfe_ru\/blog\/437304\/ --yes<\/code><\/pre>\n<p><\/p>\n<p>W specjalnym miejscu zostanie utworzony plik z tytu\u0142em strony HTML i rozszerzeniem .desktop. To tradycyjny format skr\u00f3tu w GNU\/Linux. Takie skr\u00f3ty automatycznie otrzymuj\u0105 kategori\u0119 NetworkBookmarks.<\/p>\n<p><\/p>\n<p>Naturalnie, skr\u00f3ty s\u0105 tworzone, aby z nich korzysta\u0107:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open KolorAnomalia<\/code><\/pre>\n<p><\/p>\n<p>Wykonanie polecenia prowadzi do otwarcia w przegl\u0105darce w\u0142a\u015bnie zapisanej strony. Kategorii link\u00f3w do \u017ar\u00f3de\u0142 internetowych mog\u0105 s\u0142u\u017cy\u0107 jako zamiennik zak\u0142adek w przegl\u0105darce.<\/p>\n<p><\/p>\n<h3 id=\"fragmenty-faylov\">Fragmenty plik\u00f3w<\/h3>\n<p><\/p>\n<p>Warto r\u00f3wnie\u017c mie\u0107 kategorie dla poszczeg\u00f3lnych fragment\u00f3w plik\u00f3w. Niez\u0142a propozycja, prawda? Ale obecna realizacja dotyczy tylko zwyk\u0142ych plik\u00f3w tekstowych, audio- i wideo. Powiedzmy, \u017ce musisz zaznaczy\u0107 okre\u015blony fragment jakiego\u015b koncertu lub zabawny moment w filmie, wtedy przy u\u017cyciu assign mo\u017cesz skorzysta\u0107 z flag\u00f3w \u2014fragname, \u2014start, \u2014finish. Zapiszmy wst\u0119p z \"Kaczogr\u00f3d\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign vitis assign -c Czo\u0142\u00f3wki -f Duck_Tales\/s01s01.avi --finish 00:00:59 --fragname \"Czo\u0142\u00f3wka Kaczych Opowie\u015bci\"\n\nvitis open Czo\u0142\u00f3wki<\/code><\/pre>\n<p><\/p>\n<p>Tak naprawd\u0119 nie ma \u017cadnego przycinania plik\u00f3w, zamiast tego tworzony jest plik wska\u017anikowy do fragmentu, w kt\u00f3rym opisany jest typ pliku, \u015bcie\u017cka do pliku, pocz\u0105tek i koniec fragmentu. Tworzenie i otwieranie wska\u017anik\u00f3w do fragment\u00f3w jest delegowane do narz\u0119dzi, kt\u00f3re specjalnie stworzy\u0142em do tych cel\u00f3w \u2014 to mediafragmenter i fragplayer. Pierwsze tworzy, drugie otwiera. W przypadku plik\u00f3w audio i wideo uruchomienie pliku multimedialnego z okre\u015blonej do okre\u015blonej pozycji nast\u0119puje za pomoc\u0105 odtwarzacza VLC, wi\u0119c ten r\u00f3wnie\u017c musi by\u0107 w systemie. Najpierw chcia\u0142em to zrobi\u0107 na bazie mplayera, ale z jakiego\u015b powodu z pozycjonowaniem w odpowiednim momencie by\u0142o bardzo \u017ale.<br \/>\nW naszym przyk\u0142adzie tworzony jest plik \"Duck Tales intro.fragpointer\" (umieszczany w specjalnym miejscu), a nast\u0119pnie odtwarzany jest fragment od pocz\u0105tku pliku (gdy\u017c \u2014start nie zosta\u0142 okre\u015blony podczas tworzenia) do znacznika w 59 sekundzie, po czym VLC jest zamykane.<\/p>\n<p><\/p>\n<p>Inny przyk\u0142ad \u2014 postanowili\u015bmy skategoryzowa\u0107 wyst\u0105pienie na koncercie jakiego\u015b znanego wykonawcy:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Lepc \"Spasite nashi dushi\" -f Grigorij Lepc - Koncert Parus - piosenki W\u0142adimira Wysockiego.mp4 --fragname \"Spasite nashi dushi\" --start 00:32:18 --finish 00:36:51\n\nvitis open \"Spasite nashi dushi\"<\/code><\/pre>\n<p><\/p>\n<p>Po otwarciu plik zostanie w\u0142\u0105czony w odpowiedniej pozycji i zamknie si\u0119 po czterech i p\u00f3\u0142 minutach.<\/p>\n<p><\/p>\n<h1 id=\"kak-eto-vsyo-rabotaet--dopolnitelnye-vozmozhnosti\">Jak to wszystko dzia\u0142a + dodatkowe mo\u017cliwo\u015bci<\/h1>\n<p><\/p>\n<h2 id=\"hranenie-kategoriy\">Przechowywanie kategorii<\/h2>\n<p><\/p>\n<p>Na pocz\u0105tku planowania organizacji semantycznego systemu plik\u00f3w wpad\u0142em na trzy sposoby: przez przechowywanie symbolicznych link\u00f3w, za pomoc\u0105 bazy danych, przez opis w XML. Wygra\u0142 pierwszy spos\u00f3b, poniewa\u017c z jednej strony jest prosty w realizacji, a z drugiej \u2014 u\u017cytkownik ma mo\u017cliwo\u015b\u0107 przegl\u0105dania kategorii bezpo\u015brednio z systemu plik\u00f3w (co jest wygodne i wa\u017cne). Na pocz\u0105tku u\u017cytkowania <em>vitis<\/em> W domowym katalogu u\u017cytkownika tworzony jest katalog \"Vitis\" i plik konfiguracyjny \".config\/vitis\/vitis.conf\". W ~\/Vitis tworzone s\u0105 katalogi odpowiadaj\u0105ce kategoriom, a w tych katalogach-kategoriach tworzone s\u0105 dowi\u0105zania symboliczne do oryginalnych plik\u00f3w. Pseudonimy kategorii to tak\u017ce po prostu dowi\u0105zania do nich. Oczywi\u015bcie, posiadanie katalogu \"Vitis\" w katalogu domowym mo\u017ce niekt\u00f3rych nie satysfakcjonowa\u0107. Mo\u017cemy prze\u0142\u0105czy\u0107 si\u0119 w dowolne inne miejsce:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis service set path \/mnt\/MyFavoriteDisk\/Vitis\/<\/code><\/pre>\n<p><\/p>\n<p>W pewnym momencie staje si\u0119 jasne, \u017ce rozproszone w r\u00f3\u017cnych miejscach pliki ma\u0142o sensownie jest kategoryzowa\u0107, poniewa\u017c ich lokalizacja mo\u017ce si\u0119 zmienia\u0107. Dlatego na pocz\u0105tku stworzy\u0142em sobie katalog, do kt\u00f3rego po prostu wrzuca\u0142em wszystko i przyznawa\u0142em temu wszystkim kategorie. Nast\u0119pnie postanowi\u0142em, \u017ce by\u0142oby dobrze uwzgl\u0119dni\u0107 ten moment na poziomie programowym. Tak powsta\u0142a koncepcja \"przestrzeni plikowej\". Na pocz\u0105tku u\u017cytkowania. <em>vitis<\/em> od razu nie zaszkodzi\u0142oby skonfigurowa\u0107 takie miejsce (tam b\u0119d\u0105 gromadzone wszystkie potrzebne nam pliki) i w\u0142\u0105czy\u0107 automatyczne zapisywanie:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis service add filespace \/mnt\/MyFavoriteDisk\/Filespace\/\n\nvitis service set autosave yes<\/code><\/pre>\n<p><\/p>\n<p>Bez automatycznego zapisywania przy u\u017cyciu podkomendy &#171;assign&#187; b\u0119dzie wymagany flag &#8212;save, je\u015bli zajdzie potrzeba zapisania dodawanego pliku w przestrzeni plikowej.<\/p>\n<p><\/p>\n<p>Co wi\u0119cej, mo\u017cna doda\u0107 kilka przestrzeni plikowych i zmienia\u0107 ich priorytety, co mo\u017ce by\u0107 przydatne, gdy jest du\u017co plik\u00f3w przechowywanych na r\u00f3\u017cnych no\u015bnikach. Nie b\u0119d\u0119 tutaj omawia\u0107 tej funkcjonalno\u015bci, szczeg\u00f3\u0142y mo\u017cna znale\u017a\u0107 w dokumentacji programu.<\/p>\n<p><\/p>\n<h2 id=\"migraciya-semanticheskoy-faylovoy-sistemy\">Migracja semantycznego systemu plik\u00f3w<\/h2>\n<p><\/p>\n<p>Tak czy inaczej, katalog Vitis i przestrzenie plikowe teoretycznie mog\u0105 czasem przenosi\u0107 si\u0119 z miejsca na miejsce. Aby przywr\u00f3ci\u0107 dzia\u0142anie, stworzy\u0142em osobne narz\u0119dzie <em>link-editor<\/em>, kt\u00f3re mo\u017ce masowo edytowa\u0107 linki, zast\u0119puj\u0105c cz\u0119\u015bci \u015bcie\u017cki innymi:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">cp -r \/mnt\/MyFavoriteDisk\/Vitis\/ ~\/Vitis\nlink-editor -d ~\/Vitis\/ -f \/mnt\/MyFavoriteDisk\/Vitis\/ -r ~\/Vitis\/ -R\ncp -r \/mnt\/MyFavoriteDisk\/Filespace\/ ~\/MyFiles\nlink-editor -d ~\/Vitis\/ -f \/mnt\/FlashDrive-256\/Filespace\/ -r ~\/MyFiles -R<\/code><\/pre>\n<p><\/p>\n<p>W pierwszym przypadku, po przeniesieniu z \/mnt\/MyFavoriteDisk\/Vitis\/ do katalogu domowego, edytowane s\u0105 linki symboliczne zwi\u0105zane z aliasami. W drugim przypadku, po zmianie lokalizacji przestrzeni plikowej, wszystkie linki w Vitis s\u0105 zmieniane na nowe zgodnie z zapytaniem o zast\u0105pienie cz\u0119\u015bci ich \u015bcie\u017cki.<\/p>\n<p><\/p>\n<h2 id=\"avtomaticheskie-kategorii\">Automatyczne kategorie<\/h2>\n<p><\/p>\n<p>Je\u015bli uruchomisz polecenie <code>vitis service get autocategorization<\/code>, mo\u017cesz zobaczy\u0107, \u017ce domy\u015blnie skonfigurowane jest przypisanie automatycznych kategorii na podstawie formatu (Format i Typ) oraz rozszerzenia plik\u00f3w (Rozszerzenie).<\/p>\n<p><\/p>\n<p>Jest to przydatne, gdy na przyk\u0142ad musisz znale\u017a\u0107 co\u015b w\u015br\u00f3d plik\u00f3w PDF lub sprawdzi\u0107, co przechowujesz w formatach EPUB i FB2; wystarczy wykona\u0107 zapytanie<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Format\/MOBI u: Format\/FB2<\/code><\/pre>\n<p><\/p>\n<p>Okaza\u0142o si\u0119, \u017ce standardowe narz\u0119dzia GNU\/Linux, takie jak file czy mimetype, nie spe\u0142ni\u0142y moich oczekiwa\u0144, poniewa\u017c nie zawsze prawid\u0142owo identyfikuj\u0105 format plik\u00f3w, wi\u0119c musia\u0142em stworzy\u0107 w\u0142asn\u0105 implementacj\u0119 opart\u0105 na sygnaturach plik\u00f3w i rozszerzeniach. W og\u00f3le, temat okre\u015blania format\u00f3w plik\u00f3w jest interesuj\u0105cy i zas\u0142uguje na osobny artyku\u0142. Na razie mog\u0119 powiedzie\u0107, \u017ce by\u0107 mo\u017ce nie dla wszystkich format\u00f3w na \u015bwiecie przewidzia\u0142em prawid\u0142owe rozpoznawanie, ale og\u00f3lnie ju\u017c teraz dzia\u0142a to ca\u0142kiem nie\u017ale. Niestety, aktualnie format EPUB identyfikowany jest jako ZIP (co jest, w sumie, uzasadnione, ale w praktyce nie nale\u017cy tego uwa\u017ca\u0107 za normalne zachowanie). Do pewnego stopnia prosz\u0119 traktowa\u0107 t\u0119 funkcjonalno\u015b\u0107 jako eksperymentaln\u0105, a o b\u0142\u0119dach informowa\u0107. W dziwnych sytuacjach zawsze mo\u017cna korzysta\u0107 z kategorii wed\u0142ug rozszerzenia pliku, na przyk\u0142ad Extension\/epub.<\/p>\n<p><\/p>\n<p>Je\u015bli automatyczne kategorie s\u0105 w\u0142\u0105czone wed\u0142ug formatu, r\u00f3wnie\u017c aktywowane s\u0105 automatyczne kategorie, \u0142\u0105cz\u0105ce niekt\u00f3re formaty, takie jak &#171;Archiwa&#187;, &#171;Obrazy&#187;, &#171;Wideo&#187;, &#171;Muzyka&#187; i &#171;Dokumenty&#187;. Dla tych podkategorii r\u00f3wnie\u017c zostan\u0105 stworzone zlokalizowane nazwy.<\/p>\n<p><\/p>\n<h1 id=\"o-chyom-ne-skazano\">O czym nie powiedziano<\/h1>\n<p><\/p>\n<p><em>vitis<\/em> sta\u0142 si\u0119 bardzo wszechstronnym narz\u0119dziem, a trudno wszystko od razu obj\u0105\u0107. Kr\u00f3tko wspomn\u0119, co jeszcze mo\u017cna robi\u0107:<\/p>\n<p><\/p>\n<ul>\n<li>mo\u017cna usuwa\u0107 kategorie i od\u0142\u0105cza\u0107 je od plik\u00f3w;<\/li>\n<li>wyniki zapyta\u0144 wyra\u017ceniowych mo\u017cna kopiowa\u0107 do wskazanego katalogu;<\/li>\n<li>plik\u00f3w mo\u017cna uruchamia\u0107 jako programy;<\/li>\n<li>komenda show ma wiele opcji, na przyk\u0142ad sortowanie wed\u0142ug nazwy\/data zmiany lub dost\u0119pu\/rozmiaru\/rozszerzenia, wy\u015bwietlanie w\u0142a\u015bciwo\u015bci plik\u00f3w i \u015bcie\u017cek do orygina\u0142\u00f3w, w\u0142\u0105czenie wy\u015bwietlania ukrytych plik\u00f3w itd.;<\/li>\n<li>przy zapisywaniu link\u00f3w do internetowych \u017ar\u00f3de\u0142 mo\u017cna r\u00f3wnie\u017c zapisywa\u0107 lokalne kopie stron HTML.<\/li>\n<\/ul>\n<p><\/p>\n<p>Wszystkie szczeg\u00f3\u0142y mo\u017cna znale\u017a\u0107 w dokumentacji u\u017cytkownika.<\/p>\n<p><\/p>\n<h1 id=\"perspektivy\">Perspektywy<\/h1>\n<p><\/p>\n<p>Cz\u0119sto sceptycy m\u00f3wi\u0105, \u017ce &#171;nikt nie b\u0119dzie samodzielnie przypisywa\u0142 tych tag\u00f3w&#187;. Na swoim przyk\u0142adzie mog\u0119 udowodni\u0107 odwrotno\u015b\u0107: skategoryzowa\u0142em ju\u017c ponad sze\u015b\u0107 tysi\u0119cy plik\u00f3w, stworzy\u0142em ponad tysi\u0105c kategorii i pseudonim\u00f3w, i by\u0142o to warte zachodu. Kiedy jedn\u0105 komend\u0105 <code>vitis open Plan<\/code> otwierasz list\u0119 swoich zada\u0144 lub kiedy jednym poleceniem <code>vitis open LaTeX<\/code> otwierasz ksi\u0105\u017ck\u0119 Stolyarova na temat systemu sk\u0142adu LaTeX, to ju\u017c psychicznie trudno jest korzysta\u0107 z systemu plik\u00f3w &#171;po staro\u015bwiecku&#187;.<\/p>\n<p><\/p>\n<p>Na tej podstawie powstaje wiele pomys\u0142\u00f3w. Na przyk\u0142ad, mo\u017cna stworzy\u0107 radio automatyczne, kt\u00f3re odtwarza tematyczn\u0105 muzyk\u0119 w zale\u017cno\u015bci od aktualnej pogody, \u015bwi\u0119ta, dnia tygodnia, pory dnia lub roku. Bliskim tematem jest odtwarzacz muzyczny, kt\u00f3ry zna kategorie i mo\u017ce odtwarza\u0107 muzyk\u0119 na podstawie operacji na kategoriach jak na zbiorach. Przydatne by\u0142oby stworzenie demona, kt\u00f3ry b\u0119dzie monitorowa\u0142 katalog &#171;Pobrane&#187; i b\u0119dzie proponowa\u0142 kategoryzacj\u0119 nowych plik\u00f3w. No i oczywi\u015bcie warto by by\u0142o stworzy\u0107 normalny graficzny semantyczny mened\u017cer plik\u00f3w. Kiedy\u015b nawet tworzy\u0142em dla firmy us\u0142ug\u0119 internetow\u0105 do wsp\u00f3lnego korzystania z plik\u00f3w, ale nie by\u0142a priorytetowa i sta\u0142a si\u0119 nieaktualna, chocia\u017c osi\u0105gn\u0119\u0142a wysoki poziom funkcjonalno\u015bci. (W zwi\u0105zku z du\u017cymi zmianami w samym <em>vitis<\/em>, sta\u0142 si\u0119 ju\u017c nieprzydatny do u\u017cytku.)<\/p>\n<p>\n<b class=\"spoiler_title\">tutaj ma\u0142a demonstracja<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Kategorie zamiast katalog\u00f3w, czyli semantyczny system plik\u00f3w dla Linuksa\" src=\"\/wp-content\/uploads\/2019\/06\/0a8e3829424135a6bf9390d2b2654499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Podsumowanie<\/h1>\n<p><\/p>\n<p><em>Vitis<\/em> \u2014 nie jest to pierwsza pr\u00f3ba radykalnej zmiany sposobu pracy z danymi, ale uzna\u0142em za wa\u017cne zrealizowa\u0107 swoje pomys\u0142y i opublikowa\u0107 realizacj\u0119 w otwartym dost\u0119pie na licencji GNU GPL. Dla wygody przygotowano pakiet deb dla architektury x86-64, powinien dzia\u0142a\u0107 na wszystkich nowoczesnych dystrybucjach Debian. Na ARM napotkano drobne trudno\u015bci (przy czym wszystkie inne programy zwi\u0105zane z <em>vitis<\/em>, dzia\u0142aj\u0105 prawid\u0142owo), ale w przysz\u0142o\u015bci pod t\u0119 platform\u0119 (armhf) r\u00f3wnie\u017c zostanie przygotowany dzia\u0142aj\u0105cy pakiet. Z tworzeniem pakiet\u00f3w RPM na razie zaprzesta\u0142em z powodu problem\u00f3w z Fedora 30 i trudno\u015bci w rozszerzaniu na wiele dystrybucji RPM, ale p\u00f3\u017aniej i tak dla kilku z nich zostan\u0105 stworzone pakiety. A na razie mo\u017cna korzysta\u0107 z <code>make &amp;&amp; make install<\/code> lub <code>checkinstall<\/code>.<\/p>\n<p><\/p>\n<p>Dzi\u0119kuj\u0119 wszystkim za uwag\u0119! Mam nadziej\u0119, \u017ce ten artyku\u0142 i ten projekt b\u0119d\u0105 mog\u0142y okaza\u0107 si\u0119 przydatne.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/tech.vindex\/vitis\">Link do repozytorium projektu<\/a><\/noindex><\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/457328\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439. \u042f \u043b\u044e\u0431\u043b\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u0430\u0436\u0443\u0449\u0443\u044e\u0441\u044f \u043d\u0443\u0436\u043d\u043e\u0439, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0432\u043e \u0441\u043d\u0435 \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0438 \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u044d\u0433\u043e\u0432 \u0444\u0430\u0439\u043b\u0430\u043c, \u0438 \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0442\u0430\u043a \u0436\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0447\u0430\u0441\u0442\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26733,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35687","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=\"\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.\" \/>\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\/pl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0438\u043b\u0438 \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux\" \/>\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:05:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:05:46+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\udd47Kategorie zamiast folder\u00f3w, czyli semantyczny system plik\u00f3w dla Linux | ProHoster","description":"Klasyfikacja danych to sama w sobie interesuj\u0105cy temat do bada\u0144.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0438\u043b\u0438 \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f Linux | ProHoster","og:description":"\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","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:05:46+00:00","article:modified_time":"2019-10-31T19:05:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35687","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-01-22 00:23:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:57:46","updated":"2026-01-22 00:23:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=35687"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/35687\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/26733"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=35687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=35687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=35687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}