Файловая система, использующая теги, а не папки?

123

Мои файлы в беспорядке, я пытаюсь структурировать их в папки с именами, которые описывают то, что они собой представляют, в смысле рекурсивной разбивки классов, но позже у меня возникают проблемы с поиском файла снова, когда я ищу его (один файл может быть существуют во многих папках).

Какая файловая система позволит мне находить файлы по комбинации тегов вместо использования папок?

Если бы существовала такая файловая система, я не уверен, как бы справились операционные системы, так как они сильно зависят от системы папок. Я наткнулся на tag2find , что неплохо; это решает мою проблему с поиском материалов на данный момент, но это приложение, а не файловая система.

clinux
источник
Связанный: stackoverflow.com/q/876188/89771
Аликс Аксель
2
(по состоянию на 2013 год) Gmail уже использует эту систему для обработки ваших сообщений электронной почты. Теперь, чтобы заставить их реализовать это на Google Диске!
chharvey
этот вопрос похож на этот
chharvey
2
Я думал об этом, такая система могла бы вообще избавиться от папок и даже имен файлов (не говоря уже о чепухе с расширениями). Таким образом, путь, имя и уникальный идентификатор файла будут просто набором тегов, которые к нему применяются. И даже тогда может быть несколько файлов с одинаковым набором тегов, почему бы и нет. Обозначения могут быть такими же, например, document/report/2015/finance/v2.01в котором порядок тегов не имеет значения. Самое замечательное в этом то, что вы можете просто указать некоторые теги, а не все, и при этом получить нужный файл (ы).
Петруза
1
@Petruza Я думаю, что наличие уникального идентификатора для каждого файла может затруднить управление тегами. Имена файлов по-прежнему будут полезным свойством в дополнение к более общим тегам.
jiggunjer

Ответы:

34

То, что вы просите, - это файловая система базы данных . Я знаю одну экспериментальную реализацию для Linux под названием DBFS . Microsoft начала разработку Windows Future Storage (WinFS) - планировалось, что она будет поставляться с Vista, но из-за технических проблем проект был отложен и, насколько мне известно, окончательно отменен. NTFS также может хранить метаданные для файлов, но не в пределах полнофункциональной файловой системы базы данных.

Интеграция такой файловой системы в операционную систему не должна быть такой сложной для ядра операционной системы - можно просто придерживаться иерархической модели. Сложная часть - это (графическая) оболочка, которая должна открывать пользователю структуру и возможности файловой системы.

Даниэль Брюкнер
источник
2
да, WinFS была отменена примерно в 2006 г .: с. Возможно, когда-нибудь попробуем DBFS.
Clinux
5
Я считаю, что их также называют семантическими файловыми системами или реляционными файловыми системами.
jiggunjer
38

Вот несколько файловых систем, которые я нашел с помощью Google.

TagFS - статья Стефана Блодорна и Макса Фёлькеля «Семантика тегов для иерархических файловых систем», 2006 г. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.60.4187

dhtfs - "Файловая система на основе тегов, обеспечивающая динамическую иерархию каталогов на основе тегов, связанных с файлами", полезная реализация, последний выпуск 2007 г. http://code.google.com/p/dhtfs/

Tagsistant - проект "Семантическая файловая система рассуждений для Linux и BSD" в стадии активной разработки http://www.tagsistant.net/

Leaftag - еще одна реализация "Tagging for the Linux desktop", последний выпуск 2006 г. http://www.chipx86.com/w/index.php/Leaftag

Что касается интеграции с ОС, я не думаю, что это должно быть так сложно. Операционные системы сильно зависят от иерархии файловой системы, но файловая система на основе тегов может имитировать структуру каталогов. Например, в файловой системе, основанной на тегах, путь /etc/init.dбудет содержать все файлы, помеченные ровно двумя тегами, то есть 'etc' и 'init.d'. Для файлов, которые помечены другими тегами, а также этими двумя тегами, их дополнительные теги могут отображаться как каталоги внутри /etc/init.d. Если есть файл a.txt с тремя тегами, то есть 'etc', 'init.d' и 'asdf', тогда 'asdf' появится как каталог внутри /etc/init.d, а полный путь к a.txt станет / и т.д. / init.d / ASDF / a.txt.

binW
источник
@clinux: Вот еще один недавний, Fuse :: TagLayer , хотя, похоже, он доступен только для чтения.
isync
36

Я являюсь автором программы TMSU для Linux, которая позволяет помечать файлы и просматривать их в файловой системе на основе тегов.

Вот несколько примеров использования:

$ 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

И виртуальная файловая система:

$ 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

Цифры в именах файлов - это идентификаторы, позволяющие сохранить уникальность имен файлов. Это символические ссылки на исходное расположение файлов.

$ 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

Он все еще находится в активной разработке. На момент написания (октябрь 2014 г.) доступна версия 0.4.2, но я скоро выпущу 0.5.0.

Пол Руан
источник
1
Любой способ использовать это с Windows?
Джонатан
1
@ Джонатан, да, есть старая сборка Windows, которую вы можете попробовать. Обратите внимание, что он немного глючит и нет поддержки VFS. Я по-прежнему хочу заняться правильным портированием, но сначала хочу привести ядро ​​в хорошее состояние.
Paul Ruane
Звучит потрясающе, Пол :)
Джонатан
6

Vista и Windows 7 поддерживают тегирование файлов. См. Эту статью

Иоганн Стридом
источник
9
К сожалению, таким образом можно пометить не все типы файлов.
Clinux
5

Попробуйте tagfs . Это файловая система пользовательского пространства на основе плавких предохранителей. Он может отображать каталоги с тегами из исходного каталога в представлении фильтра тегов.

Например, у вас есть каталог «отпуск в Индии» с тегами «Индия» и «фотографии» и каталог «отпуск в Испании» с тегами «испания» и «фотографии». Вы можете отфильтровать все свои фотографии, введя путь '/ my_mountpoint / photos'.

Каталоги размечены посредством простого текстового файла. Файл с именем '.tag' в каталоге содержит теги. Несколько тегов разделяются символами новой строки.

Маркус Перёбнер
источник
3

Я столкнулся с этим вопросом, задавая себе тот же вопрос о тегах файлов файловой системы. Затем я наткнулся на это приложение для Windows XP / Vista под названием TaggedFrog, которое может помочь. Еще не пробовал, но выглядит многообещающе.

Однако не с нетерпением жду просмотра тысяч файлов! В любом случае, в какой-то момент мне придется перейти на Win7, и я могу попробовать его встроенную маркировку.

KJH
источник
Я считаю, что TaggedFrog поддерживает и более новые версии Windows.
jiggunjer
2

Я также давно думал о файловой системе на основе тегов. Кто-нибудь думал о более радикальном и простом подходе? Чтобы полностью забыть папки (смоделированные папки только из соображений совместимости программ) и поместить все теги прямо в имя файла.

(Классическое имя файла) _Tag1_Tag2_Tag3 _..... (Расширение файла)

Mydocument_tag основе-файлов system_tags_file-system_stackoverflow_folder_file-name_tagfs.txt

Мне всегда нравится помещать как можно больше информации в имя файла. Вы можете найти все в миллионах файлов во всех возможных ОС.

Единственное ограничение - это различная длина имени файла в evey OS, и это становится беспорядком с текущими системами.

Усовершенствованная ОС может получить доступ к следующему файлу: Mydocument.txt И теги можно редактировать на самом низком уровне ОС, как сегодня можно изменить имя файла. Если вдруг появляется другой файл Mydocument.txt, он автоматически переименовывается в Mydocument (2) .txt и так далее.

Я знаю, что эта идея не лишена дополнительных проблем, даже не упомянутых здесь ...

Но идея собирается хранить теги в самой простой возможности низкого уровня, к которой можно получить доступ из ВСЕХ прошлых и будущих файловых систем. А общее у всех ФС - это имя файла.

UntitledArtists
источник
Это звучит как очень грубая реализация DBFS.
Chuu
Вы смешиваете яблоки и апельсины. Все это приводит к перемещению иерархической структуры из каталога к имени файла. Или, другими словами, «все в одном каталоге» и «теги в именах файлов» не имеют смысла в мире, основанном на тегах. И, конечно же, вы бы не хотели, чтобы прикладным программам приходилось иметь дело с 10 000 файлов, поэтому ОС должна была бы эффективно доставлять файлы на основе спецификации тега. Таким образом, приложение отправляет ОС «теги», необходимые для «идентификации файла», и ... вы сразу возвращаетесь либо в каталоги, либо в одну из альтернативных файловых систем, упомянутых здесь.
CoolHandLouis
Проводник Windows имеет ограничение пути в 255 символов, что легко достигается. В противном случае ограничение должно быть продиктовано ограничением FS на имена файлов. Да, довольно грубо, но все же хорошая идея. Если вы хотите сохранить метаданные в файле и отфильтровать их на низком уровне, могут быть другие менее ограниченные способы, такие как добавление или добавление данных к файлу или наличие вспомогательного файла с тем же именем файла, но другим расширение, которое будет содержать метаданные. Другая проблема заключается в том, что простое переименование тега может потребовать миллиона операций изменения файла.
Rolf
Собственно эту идею реализовал TagSpaces .
Arnie97
2

Для windows есть TagsForAll . Это файловый менеджер, основанный на тегах. Теги могут иметь иерархическую структуру. Пользовательский интерфейс очень простой, но приятный. Бесплатная версия полностью функциональна и сохраняет теги в базе данных, версия Pro сохраняет теги также в потоке NTFS в файл.

het_passagier
источник
2

Я считаю, что дизайн пользовательского интерфейса Elyse великолепен. Но это скорее статическая система, которая не может автоматически просматривать папку и помечать новый файл тегом по умолчанию.

misssprite
источник
0

Я не думаю, что была (есть) поддержка тегов как таковая, но BFS поддерживает некоторые довольно интересные функции метаданных.

pr1001
источник