Рассмотрим упаковку подраздела (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
Отправить ответ