Можно ли добавлять файлы в директорию только для чтения, используя overlayfs?

Вопрос или проблема

Я хочу добавить несколько файлов в каталог только для чтения или хотя бы симулировать это. В следующем примере с этой страницы:

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 позволяет объединять несколько файловых систем, создавая единый вид файлов. Ваша структура состоит из нескольких уровней:

  1. lowerdir – каталог, доступный только для чтения. В вашем случае это /tmp/lower.
  2. upperdir – каталог для записи, куда будут добавляться новые файлы. В вашем примере это /tmp/upper.
  3. workdir – временный каталог, необходимый для работы overlayfs. Этот каталог используется для хранения промежуточной информации и изменений.
  4. 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 с простотой настройки.

Оцените материал
Добавить комментарий

Капча загружается...