Упаковка снимка BTRFS в сжатый файл-образ

Рассмотрим упаковку подраздела (subvolume) BTRFS в сжатый файл-образ.


Сначала делаем снимок в режиме только чтения:
btrfs subvol snapshot -r orig snapshot

Типовая схема передачи всего подраздела (подтома) BTRFS без сжатия такова:
btrfs send snapshot | ssh ip@host btrfs receive /path
ssh может стоять по любую сторону, также его может вовсе не быть. В результате подобной команды на приемнике будет подраздел в режиме только для чтения /path/snapshot. С него можно снять снимок (снапшот) уже в режиме чтения. Отправлять (send) можно только снимок в режиме только чтения (ключ -r у btrfs subvol snapshot).

Суть нашего трюка в том, что мы отправляем поток данных в программу для сжатия и выводим результат в файл. Пример:
btrfs send snapshot | zstd -16 -T0 -vv -o /path/to/file.img.zst
Или то же самое с сохранением в файл средствами шелла, а не самой zstd:
btrfs send snapshot | zstd -16 -T0 -vv > /path/to/file.img.zst
Вместо zstd можно использовать gzip, xz или любую другую программу для сжатия.

Получается, что весь снимок упаковался в файл, с которым можно сделать, что угодно, например, с помощью split(1) нарезать на куски, записать на DVD-болванки и положить их в шкаф.

Восстановление из снимка будет производиться как-то так:
zstd -d /path/to/file.img.zst | btrfs receive /path

Отправить ответ

avatar
  Subscribe  
Сообщать по почте