Есть ли git-подобная файловая система?

27

Git хранит контент уникальным образом в своем репо на основе вычисленного хэша любого файла. Если в моем каталоге есть две копии одного и того же файла где-то внутри, git сохранит его только один раз.

Мне интересно, была ли реализована эта же концепция на уровне операционной системы как какая-то файловая система?

Если бы файловая система действовала таким образом по умолчанию, это хорошо помогло бы с проблемами ада . По сути, это будет символическая ссылка автоматически от вашего имени. Любое приложение может быть упаковано (например, в jar) в каталог со всеми его зависимостями без дополнительных затрат на хранение.

Любители Ruby делятся библиотеками, публикуя их как rubygems. Тем не менее, эта попытка поделиться драгоценными камнями привела к кошмарам развертывания, которые привели к концепции Vendor Everything - копированию всех зависимостей в локальные папки, чтобы избежать таких кошмаров.

Марио
источник
2
Я не эксперт, но зацени ZFS .
ForeverWintr

Ответы:

21

То, что вы ищете, называется «дедупликация». В то время как это обычно реализуется поставщиками специализированных продуктов хранения, файловая система ZFS также реализует это. Большинство производных от Unix операционных систем могут использовать ZFS, и поэтому я рекомендую его в качестве первого места для поиска.

Аарон Миллер
источник
1
Я вижу, что «дедупликация» может быть реализована на уровне файлов, что меня особенно интересовало.
Марио
3

В течение многих лет Network Appliance, Inc. обладала такой способностью к хранению, фактически они подали жалобы в Sun Microsystems в отношении своей файловой системы ZFS и делают то, что упоминает Аарон Миллер в своем принятом ответе. Что касается того, что стоит, жалобы были улажены с Оракулом приблизительно через 3 года.

Я использовал это как корпоративное решение с 2000 года, и оно работает хорошо. Стоимость хранения после первой «копии» наступает после изменения файла. В противном случае, со многими «копиями» происходит лишь небольшое увеличение пространства имен.

Я не думаю, что это отвечает на вопрос об «уровне операционной системы», а скорее о «уровне файловой системы».

vgoff
источник
0

Новая файловая система Apple (APFS, названная так потому, что уже была AFS, которая была чем-то другим), выполняет магию «автоматической жесткой связи» / «дедупликации». MacOS 10.13 поддерживает его изначально (на большинстве Mac), как и iOS 11.

При этом я не чувствую, что этого достаточно, чтобы сделать его «похожим на git», так как если бы он был «похожим на git», то он также имел бы криптографическую контрольную сумму состояния моей структуры каталогов в заданные моменты времени, чтобы Я мог быть уверен, что никто не взломал мой компьютер и не модифицировал мои системные каталоги. Фактически, я использую git-репозитории для отслеживания определенных критических системных каталогов на моих компьютерах Mac, таких как конфигурационные файлы Apache, LaunchDaemons, LaunchAgents и некоторые другие - таким образом, когда я устанавливаю программное обеспечение или запускаю свой сервер на некоторое время, я вижу, есть ли что-нибудь облажался.

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

Вы всегда можете построить Хакинтош и разбираться с ним. BSD это весело.

CommaToast
источник