Я использую BTRFS. Я могу подтвердить и уточнить некоторые из того, что говорит этот ответ ; и я могу добавить что-то еще.
Вы можете смонтировать любой снимок. Вы можете изменить его, если он не был создан с опцией "только для чтения". Снимок - это просто подобъем, он не "запоминает", из какого другого подобъема он был создан. Подобъем источника и его снимок изначально эквивалентны. Лучше думать о вновь созданном снимке как о "форке", а не буквальном "снимке", "копировании", "замороженном состоянии" или любом другом имени, которое указывает на его худший статус по отношению к "оригиналу".
Когда вы разветвляетесь подобъем (создаете моментальный снимок), вы можете подумать о снимке на момент времени, если решите больше не изменять "копию" (либо явно создав его как доступный только для чтения подобъем, либо просто ничего не делая с ним). , оставив его в покое), пока "оригинал", возможно, еще используется. Я использую моментальные снимки для резервного копирования своей системы перед «apt-get upgrade», но никогда не удосужился создать их "только для чтения". Моя точка зрения такова: их статус Point-In-Time не из-за некоторых метаданных на моем диске, а из-за метаданных в моей голове - я просто воздерживаюсь от их изменения.
Снимки делят (первоначально почти все) блоки данных с "оригинальным" подобъемом. Если содержимое данного блока приводит к повреждению файла, то файл повреждается в каждом снимке, который разделяет блок. Перезапись (изменение) файла в одном из подобъемов отображает его в блок (ы), содержащие новый контент, только в контексте этого подобъема; другие подтомы остаются такими, какими они были.
Если у вас есть поврежденный файл, совместно используемый несколькими подобъемами, и вы хотите заменить его из резервной копии, вы можете:
- (общий метод) перезаписать весь файл (или отсоединить и создать заново), это переназначит все его части в другие блоки;
- (необычный метод) применяет двоичное исправление к файлу, это переназначит некоторые его части на другие блоки (это возможно, если повреждение происходит внутри файла, а не внутри файловой системы, например, недопустимый, но иначе читаемый PDF).
Выполнение этого независимо в нескольких подобъемах приведет к независимому переназначению, при этом неиспользуемые блоки будут приниматься несколько раз, а не только один раз.
Чтобы избежать этого и сделать эти замененные файлы в нескольких подобъемах общими для всех своих блоков, выполните следующие действия:
- Если он еще не смонтирован, смонтируйте где-нибудь корень файловой системы BTRFS:
mount -o subvol=/ …
. Таким образом, все возможные подобъемы будут доступны в одной точке монтирования.
- Замените файл из резервной копии в любом отдельном объеме.
- Для каждого другого подобъема, где файл должен быть заменен
- отсоединить (удалить) файл,
- затем скопируйте (
cp
) уже замененный файл из другого подобъема с параметром --reflink=always
; важно сделать это в одной точке монтирования.
- Теперь вы можете
umount
корень Btrfs файловой системы.