Вопрос или проблема
Я хочу добавить несколько файлов в каталог только для чтения или хотя бы симулировать это. В следующем примере с этой страницы:
cd /tmp
mkdir lower upper workdir overlay
sudo mount -t overlay -o \
lowerdir=/tmp/lower,\
upperdir=/tmp/upper,\
workdir=/tmp/workdir \
none /tmp/overlay
Я полагаю, каталог только для чтения будет /tmp/lower
, а файлы, которые я хочу добавить, будут скопированы в /tmp/upper
. Но как сделать так, чтобы система читала /tmp/overlay
вместо /tmp/lower
? Есть ли что-то, связанное с bindfs
?
Ответ или решение
Ответ на вопрос о добавлении файлов в каталог только для чтения с использованием overlayfs
В современном управлении файлами часто возникают ситуации, когда необходима возможность добавления файлов в каталоги, доступные только для чтения. Одним из изящных решений этой задачи является использование overlayfs – файловой системы для наложения. В этом ответе мы рассмотрим, как настроить overlayfs, чтобы имитировать добавление файлов в каталог, доступный только для чтения, и проясним роль других инструментов, таких как bindfs.
Что такое overlayfs?
overlayfs позволяет объединять несколько файловых систем, создавая единый вид файлов. Ваша структура состоит из нескольких уровней:
- lowerdir – каталог, доступный только для чтения. В вашем случае это
/tmp/lower
. - upperdir – каталог для записи, куда будут добавляться новые файлы. В вашем примере это
/tmp/upper
. - workdir – временный каталог, необходимый для работы overlayfs. Этот каталог используется для хранения промежуточной информации и изменений.
- overlay – общий каталог, который будет содержать объединенные данные из lowerdir и upperdir.
Как это работает?
При монтировании файловой системы overlayfs система создаёт виртуальный слой. Файлы из lowerdir остаются доступными для чтения, в то время как новые файлы добавляются в upperdir. Монтирование произойдёт следующим образом:
cd /tmp
mkdir lower upper workdir overlay
sudo mount -t overlay -o \
lowerdir=/tmp/lower,\
upperdir=/tmp/upper,\
workdir=/tmp/workdir \
none /tmp/overlay
После этого, любые изменения, внесенные в overlay, будут сохраняться в upperdir. Обращаясь к /tmp/overlay
, вы будете видеть как файлы из lowerdir, так и файлы, добавленные в upperdir. Таким образом, система позволяет осуществлять запись в каталог, доступный только для чтения.
Как использовать bindfs
?
bindfs – это другой инструмент для работы с файловыми системами, который может создать зеркало существующей файловой системы с возможностью изменения прав доступа. Однако в данном контексте bindfs не является нужным инструментом, так как overlayfs полностью решает вашу задачу на основе своей структуры.
Заключение
Если вы хотите добавлять файлы в каталог, доступный только для чтения, overlayfs является идеальным решением. Просто создайте нижний уровень lowerdir для хранения базовых файлов, и добавляйте новые файлы в upperdir. После этого монтируйте overlayfs в целевой каталог. Использование bindfs в данном случае не требуется, так как overlayfs самостоятельно справляется со всеми функциями, необходимыми для вашей задачи.
Таким образом, вы сможете достичь нужного результата, эффективно сочетая возможности overlayfs с простотой настройки.