25

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

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

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

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

3 ответа3

20

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

3

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

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

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

0

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .