Бэкап основной системы с помощью btrfs

У меня завалялся свободный диск на 2 ТБ, и я решил использовать его для резервного копирования основной системы. Система у меня на Btrfs. В принципе, можно просто копировать файлы через rsync или делать полные копии диска, но это неудобно и неэффективно. Btrfs предоставляет гораздо более мощные возможности для бэкапа.

Для начала нужно создать snapshot текущей системы:

btrfs subvolume snapshot -r / /.snapshots/@-snap-$(date +%Y-%m-%d)

Создаём файловую систему на бэкап-диске:

mkfs.btrfs -L backupdisk -f /dev/mapper/backup

Где:

Монтируем диск:

mount /dev/mapper/backup /mnt/backup

Создаём подтом (subvolume) для бэкапов:

btrfs subvolume create /mnt/backup/laptop0

Запускаем первый бэкап:

sudo btrfs send /.snapshots/@-snap-2025-10-31 | sudo btrfs receive /mnt/backup/laptop0/

Готово — бэкап создан. Через месяц достаточно выполнить:

btrfs send -p /.snapshots/@-snap-2025-10-31 /.snapshots/@-snap-2025-11-30 | sudo btrfs receive /mnt/backup/laptop0/

Эта команда передаст только изменения между снапшотами от 31 октября до 30 ноября, при этом в laptop0 будут храниться оба снапшота. Можно откатиться к любому из них. В этом и заключается главное удобство — резервные копии занимают минимум места и создаются на уровне файловой системы.