System plików, który używa znaczników zamiast folderów?

123

Moje pliki są bałaganem, próbuję uporządkować je w foldery z nazwami, które opisują, czym one są w sensie rekursywnego podziału klas, ale później mam problem ze znalezieniem pliku ponownie, kiedy go szukam (jeden plik może być prawdopodobnie istnieją w wielu folderach).

Jaki system plików pozwoli mi znaleźć moje pliki za pomocą kombinacji tagów zamiast folderów?

Gdyby istniał taki system plików, nie jestem pewien, jak sobie poradziłby system operacyjny, będąc tak głęboko zależnym od systemu folderów. Natknąłem się na tag2find , co nie jest takie złe; rozwiązuje mój problem ze znajdowaniem rzeczy na razie, ale jest to aplikacja, a nie system plików.

clinux
źródło
Związane z: stackoverflow.com/q/876188/89771
Alix Axel
2
(stan na 2013 r.) Gmail ma już zainstalowany ten system z Twoimi wiadomościami e-mail. Teraz, aby skłonić ich do zaimplementowania go na Dysku Google!
chharvey
to pytanie jest podobne do tego
chharvey
2
Myślałem o tym, taki system mógłby całkowicie pozbyć się folderów, a nawet nazw plików (nie wspominając o nonsensownych rozszerzeniach). W taki sposób, że ścieżka, nazwa i unikalny identyfikator pliku byłyby po prostu zestawem znaczników, które są do niego stosowane. A nawet wtedy może istnieć więcej niż jeden plik z tym samym zestawem tagów, czemu nie. Notacja może być taka sama, np. document/report/2015/finance/v2.01W której kolejność tagów nie miałaby znaczenia. Wspaniałą rzeczą w tym jest to, że możesz po prostu podać kilka tagów, a nie wszystkie, i nadal dostać się do żądanego pliku.
Petruza
1
@Petruza Myślę, że posiadanie unikalnego identyfikatora dla każdego pliku może utrudnić zarządzanie tagami. Nazwy plików nadal byłyby użyteczną właściwością oprócz bardziej ogólnych tagów.
jiggunjer

Odpowiedzi:

34

To, o co prosisz, to system plików bazy danych . Znam jedną eksperymentalną implementację dla Linuksa o nazwie DBFS . Microsoft zaczął rozwijać Windows Future Storage (WinFS) - planowano go dostarczyć z Vistą, ale z powodu problemów technicznych projekt został opóźniony i, o ile wiem, ostatecznie anulowany. NTFS jest również zdolny do przechowywania metadanych plików, ale nie w zakresie w pełni funkcjonalnego systemu plików bazy danych.

Integracja takiego systemu plików z systemem operacyjnym nie powinna być tak skomplikowana dla rdzenia systemu operacyjnego - może po prostu trzymać się modelu hierarchicznego. Złożoną częścią jest (graficzna) powłoka, która musi ujawniać użytkownikowi strukturę i możliwości systemu plików.

Daniel Brückner
źródło
2
tak, WinFS został anulowany około 2006: str. Może kiedyś wypróbuję DBFS.
clinux,
5
Uważam, że są również nazywane semantycznymi systemami plików lub relacyjnymi systemami plików.
jiggunjer
38

Oto kilka systemów plików, które znalazłem za pomocą google.

TagFS - artykuł „Tag Semantics for Hierarchical File Systems” autorstwa Stephana Bloehdorna i Maxa Völkela, 2006 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.60.4187

dhtfs - „System plików oparty na tagowaniu, zapewniający dynamiczne hierarchie katalogów na podstawie tagów powiązanych z plikami” użyteczna implementacja, ostatnie wydanie 2007 http://code.google.com/p/dhtfs/

Tagsistant - projekt "Rozumujący semantyczny system plików dla Linuksa i BSD" w trakcie aktywnego rozwoju http://www.tagsistant.net/

Leaftag - Kolejna implementacja „Tagging for the Linux desktop”, ostatnia wersja 2006 http://www.chipx86.com/w/index.php/Leaftag

Jeśli chodzi o integrację z systemami operacyjnymi, nie sądzę, żeby to było takie trudne. Systemy operacyjne są głęboko zależne od hierarchii systemu plików, ale system plików oparty na znacznikach może naśladować strukturę katalogów. Na przykład w systemie plików opartym na znacznikach ścieżka /etc/init.dwskaże wszystkie pliki, które są oznaczone dokładnie dwoma znacznikami, tj. „Etc” i „init.d”. W przypadku plików, które są oznaczone innymi znacznikami, a także tymi dwoma znacznikami, ich dodatkowe znaczniki mogą pojawić się jako katalogi wewnątrz /etc/init.d. Jeśli istnieje plik a.txt z trzema tagami, tj. „Etc”, „init.d” i „asdf”, wówczas „asdf” pojawi się jako katalog wewnątrz /etc/init.d, a pełna ścieżka do a.txt zmieni się w / etc / init.d / asdf / a.txt.

binW
źródło
@clinux: Oto kolejny niedawny, Fuse :: TagLayer , chociaż wydaje się być tylko do odczytu.
isync
36

Jestem autorem programu TMSU dla systemu Linux, który umożliwia oznaczanie plików i przeglądanie ich w systemie plików opartym na znacznikach.

Oto kilka przykładów użycia:

$ tmsu tag track.mp3 music genre=indie-rock good year=1999
$ tmsu tag melody.mp3 music
$ tmsu tag DC123.jpg photo landscape country=italy year=2014
$ tmsu files music year = 1999
./song.mp3

I wirtualny system plików:

$ mkdir mp
$ tmsu mount mp
$ ls mp
query  tags
$ ls tags
country  genre  good  landscape  photo  music  year
$ ls tags/music
genre  good  track.1.mp3  melody.2.mp3 year

Liczby w nazwach plików są identyfikatorami, dzięki którym nazwy plików są niepowtarzalne. To są symboliczne linki do oryginalnych lokalizacji plików.

$ ls tags/music/good  # you can drill down
genre  track.1.mp3  year
$ ls "query/music and good"  # this directory gets automatically created
track.1.mp3

Nadal jest w fazie aktywnego rozwoju. W chwili pisania (październik 2014) wersja 0.4.2 jest dostępna, ale wkrótce wypuszczę wersję 0.5.0.

Paul Ruane
źródło
1
Jakikolwiek sposób na użycie tego w systemie Windows?
Jonathan,
1
@Jonathan, tak, istnieje stara wersja systemu Windows, którą możesz wypróbować. Zauważ, że jest trochę błędny i nie ma wsparcia dla VFS. Mam zamiar zrobić dobry port, ale najpierw chcę doprowadzić rdzeń do dobrego stanu.
Paul Ruane,
Brzmi świetnie Paul :)
Jonathan
6

Vista i Windows 7 obsługują tagowanie plików. Zobacz ten artykuł

Johann Strydom
źródło
9
Niestety nie wszystkie typy plików można oznaczyć w ten sposób.
clinux,
5

Wypróbuj tagfs . Jest to system plików przestrzeni użytkownika oparty na bezpiecznikach. Może wyświetlać oznaczone katalogi z katalogu źródłowego w widoku filtru tagów.

Załóżmy na przykład, że masz katalog „wakacje w Indiach” z tagami „Indie” i „zdjęcia” oraz katalog „wakacje w Hiszpanii” z tagami „Hiszpania” i „zdjęcia”. Możesz filtrować wszystkie swoje zdjęcia, wpisując ścieżkę „/ my_mountpoint / photos”.

Katalogi są oznaczane za pomocą prostego pliku tekstowego. Plik o nazwie „.tag” w katalogu zawiera tagi. Wiele tagów jest oddzielonych znakami nowej linii.

Markus Peröbner
źródło
3

Natknąłem się na to pytanie, zadając sobie to samo pytanie dotyczące znaczników plików systemu plików. Potem natknąłem się na tę aplikację dla Windows XP / Vista o nazwie TaggedFrog, która może załatwić . Jeszcze tego nie próbowałem, ale wygląda obiecująco.

Nie mogę się jednak doczekać przeglądania tysięcy plików! W każdym razie będę zmuszony w pewnym momencie przejść na Win7 i wypróbować jego natywne tagowanie.

KJH
źródło
Uważam, że TaggedFrog obsługuje również nowsze wersje systemu Windows.
jiggunjer
2

Długo myślałem także o systemie plików opartym na znacznikach. Czy ktoś pomyślał o bardziej radykalnym i prostszym podejściu? Całkowicie zapomnieć o folderach (foldery symulowane tylko ze względu na kompatybilność z programami) i umieścić wszystkie znaczniki bezpośrednio w nazwie pliku.

(Klasyczna nazwa pliku) _Tag1_Tag2_Tag3 _..... (Rozszerzenie pliku)

Mydocument_tag-based-file-system_tags_file-system_stackoverflow_folder_file-name_tagfs.txt

Zawsze lubię umieszczać jak najwięcej informacji w nazwie pliku. Możesz znaleźć wszystko w milionach plików na każdym możliwym systemie operacyjnym.

Jedynym ograniczeniem jest różna długość nazwy pliku w każdym systemie operacyjnym i robi się bałagan w obecnych systemach.

Zaawansowany system operacyjny może uzyskać dostęp do pliku takiego jak ten: Mydocument.txt A tagi można edytować na najniższym poziomie systemu operacyjnego, tak jak dzisiejsza zmiana nazwy pliku. Jeśli nagle pojawi się inny plik Mydocument.txt, jego nazwa zostanie automatycznie zmieniona na Mydocument (2) .txt i tak dalej.

Wiem, że ten pomysł nie jest pozbawiony dodatkowych problemów, o których tu nawet nie wspomniano .....

Ale Idea ma zamiar przechowywać tagi w najbardziej podstawowej możliwości niskiego poziomu, do której można uzyskać dostęp ze WSZYSTKICH przeszłych i przyszłych systemów plików. A wspólną cechą wszystkich FS jest nazwa pliku.

UntitledArtists
źródło
Brzmi to jak bardzo prymitywna implementacja DBFS.
Chuu
Mieszasz jabłka i pomarańcze. Wszystko po to, aby przenieść strukturę hierarchiczną z katalogu do nazwy pliku. Innymi słowy, „wszystko w jednym katalogu” i „tagi w nazwach plików” nie mają sensu w świecie opartym na tagach. I oczywiście nie chciałbyś, aby aplikacje musiały obsługiwać 10 000 plików, więc system operacyjny musiałby wydajnie dostarczać pliki na podstawie specyfikacji znacznika. Aplikacja wysyła więc do systemu operacyjnego „tagi” potrzebne do „identyfikacji pliku” i ... wracasz do katalogów lub jednego z alternatywnych systemów plików wymienionych tutaj.
CoolHandLouis
Eksplorator Windows ma limit ścieżki do 255 znaków, do którego można łatwo dotrzeć. W przeciwnym razie limit powinien być podyktowany limitem FS nazw plików. Całkiem prymitywny, ale wciąż niezły pomysł. Jeśli chcesz przechowywać metadane w pliku i filtrować je na niskim poziomie, mogą istnieć inne mniej ograniczone sposoby, takie jak dołączanie lub dołączanie danych do pliku na początku lub posiadanie pliku „pomocniczego” o tej samej nazwie, ale innej rozszerzenie, które zawierałoby metadane. Innym problemem jest to, że zwykła zmiana nazwy znacznika może wymagać miliona operacji modyfikacji plików.
Rolf,
Właściwie ten pomysł został wdrożony przez TagSpaces .
Arnie97
2

Istnieje TagsForAll dla systemu Windows. Jest to menedżer plików oparty na tagach. Tagi mogą mieć strukturę hierarchiczną. Interfejs użytkownika jest bardzo prosty, ale ładny. Wersja bezpłatna w pełni funkcjonalna i zapisująca tagi w bazie danych, wersja Pro zapisuje tagi również w strumieniu NTFS do pliku.

het_passagier
źródło
2

Uważam, że projekt interfejsu użytkownika Elyse jest wspaniały. Ale jest to bardziej statyczny system, który nie może automatycznie obserwować folderu i tagować nowego pliku domyślnym tagiem.

misssprite
źródło
0

Nie sądzę, aby miał (ma) obsługę tagowania jako taką, ale BFS obsługuje całkiem fajną funkcjonalność metadanych.

pr1001
źródło