Использование исходного /tmp/backup/abc.xml.tar.gz
и целевого /opt/abc/xyz/abc.xml_v9
файла примера. вы можете использовать эту команду:
tar --transform='flags=r;s|abc.xml|abc.xml_v9|' -xvf abc.xml.tar.gz -C /opt
Или
tar --transform='flags=r;s/abc.xml/abc.xml_v9/' -xvf abc.xml.tar.gz -C /opt
И ты получишь
/opt/abc/xyz/abc.xml_v9
См.:
https://www.gnu.org/software/tar/manual/html_section/tar_51.html#transform
При создании моментального снимка фактически создается подтом, к которому можно получить доступ в структуре каталогов базового тома. Оттуда, если у вас есть соответствующие права, вы можете просматривать его и копировать файлы или папки. Опция --reflink
для копирования, похоже, не нужна для этого, хотя она приятнее, так что при копировании вещи не дублируются.
Дополнительное создание подтома для моментальных снимков:
btrfs subvolume create.my_snapshots
Создание снимка:
btrfs subvolume snapshot -r /mnt_point /mnt_point/.my_snapshots/snapshot1
Использование флага -r
делает снимок только для чтения(https://wiki.archlinux.org/index.php/btrfs#Snapshots).
Если сначала не создавать подтом и не делать его доступным только для чтения, он может просто выглядеть так:
btrfs subvolume snapshot /mnt_point /mnt_point/snapshot1
Восстановление может быть выполнено копированием файла (s )или папки (s )из моментального снимка:
cp /mnt_point/.my_snapshots/snapshot1/sub/dir/file /sub/dir/file
(Произведено изhttps://lore.kernel.org/linux-btrfs/28c839e8-4d4f-031c-ee3e-3e676e344db3@cobb.uk.net/t/#m16db5d9f29d26f41a8adb4499ffe3e220a85d9b8)
Использование внешних инструментов, таких как snapper, имеет некоторые преимущества, поскольку они делают работу со снимками более удобной и обладают полезными функциями.
Сначала необходимо создать файл конфигурации для тома (sub ), для которого нужно создать моментальные снимки :
.snapper -c config-name create-config /mnt_point
При этом создается файл конфигурации с именем config-name
. Обратите внимание, что это также обычно позволяет создавать автоматические моментальные снимки на основе времени -, а также правила для их очистки после некоторой логики. Обратите внимание, что созданные вручную моментальные снимки не удаляются по таким правилам.
Моментальный снимок можно сделать вручную с помощью:
snapper -c config-name create --description description-content
где config-name
— имя ранее созданного конфига, а description-content
можно заполнить некоторым описанием снимка.
(Произведено изhttps://wiki.archlinux.org/index.php/Snapper)
Затем восстановление работает так же, как описано выше для раздела инструментов btrfs с доступом к смонтированному моментальному снимку и копированием данных.
Кроме того, Snapper предоставляет команду для этого, которую также можно использовать для отмены изменений для текущего тома в соответствии с документацией openSUSE . Однако обратите внимание, что это может привести к несоответствию данных. Также в документации Red Hat указано, что эту команду нельзя использовать с корневой файловой системой.
Теоретически файлы можно восстановить с помощью:
snapper -c config-name -v undochange SNAPSHOT_ID..0 FILENAME
, где SNAPSHOT_ID
— это идентификатор моментального снимка для восстановления из (, а ..0
указывает, что файлы восстанавливаются на основной том ), а FILENAME
— это путь к файлу для восстановления. Можно также указать более одного файла.
(Произведено изhttps://doc.opensuse.org/documentation/leap/archive/15.0/reference/html/book.opensuse.reference/cha.snapper.html#proc.snapper.restore.cmdl)
Моментальные снимки BTRFS работают на уровне подтома. Это означает, что вы можете «откатывать» части томов, но не отдельные файлы.
Поскольку подтома отображаются как каталоги в файловой системе, можно сказать, что возможен откат каталогов.
Для отката отдельных файлов я использую копию рефлинка, как показано в предоставленной вами ссылке. Тем не менее, у меня есть соответствующие подтомы, смонтированные автоматически через /etc/fstab
, так что никаких неудобств.