Возможно ли в linux иметь каталог, который содержит все содержимое другого каталога (только для чтения), но вы можете писать в каталог, не влияя на «родительский» каталог.

Чтобы предоставить некоторый контекст того, чего я пытаюсь достичь, у меня есть приложение, которое будет работать для всех пользователей. Это приложение загружает несколько "пакетов" в папку, для которой я хочу иметь эту функцию. Каждый из пакетов имеет свою собственную уникальную папку (которая является хешем содержимого, поэтому должна быть уникальной для каждого пакета - но давайте предположим, что с помощью программного обеспечения предотвращается коллизия хешей). Тем не менее, существует множество пакетов, я знаю, что все пользователи захотят добавить и некоторые из них, которые им всем понадобятся. Если каждый пользователь заполняет свой каталог одними и теми же пакетами, это снова и снова будет занимать ненужное место, особенно с базовыми пакетами, которые, как я знаю, будет у каждого пользователя.

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

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

Возможно ли это в Linux, и если да, то какие ресурсы вы можете предоставить мне, чтобы посмотреть варианты?

2 ответа2

1

UnionFS может делать это с любыми основными файловыми системами, которые вы хотите. Я понимаю, что это также входит во многие дистрибутивы.

1

Если ваш дистрибутив включает в себя btrfs и если вы считаете, что он готов к работе, вы можете использовать начальные разделы btrfs.

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

Примеры можно найти на вики-странице btrfs для семян.

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