Назад | Перейти на главную страницу

Эффективное хранение дубликатов файлов в Linux

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

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

Смысл упражнения - уменьшить бесполезное пространство, используемое дублированными файлами.

Мне нужно, чтобы это было прозрачно

ZFS-на-Linux × функция, называемая «он-лайн дедупликация».

UPD.: Я еще раз перечитал ваш вопрос, теперь похоже Aufs может быть вам полезен. Это очень популярное решение для хостинговых сред. И на самом деле я теперь могу упомянуть Btrfs и сам - шаблон состоит в том, что у вас есть некоторый подтом-шаблон, который вы снимаете каждый раз, когда вам нужен другой экземпляр. Это COW, поэтому больше места потребуется только для измененных файловых блоков. Но имейте в виду, что Btrfs, эээ ... ну, в любом случае, не слишком стабильный. Я бы использовал его в продакшене, только если данные о нем абсолютно нормально утерять.

Существует файловая система пространства пользователя / fuse в Linux, которая выполняет эту дедупликацию.

http://sourceforge.net/p/lessfs/wiki/Home/

В Linux Journal есть хорошая статья об этом в августовском выпуске 2011 года. Также существуют различные параметры, специфичные для файловой системы, с btrfs и zfs.