Всем привет, на связи Уханов. В прошлом посте мы поприкалыавались на тему создания автоматических снимков файловой системы BTRFS в Debian. Тогда в конце заметки я упомянул, что Grub можно научить грузить систему прямо из снимка. Давайте сделаем это, а заодно, рассмотрим другую программу для управления снимками.

Нюанс установки системы

В посте про установку Debian на subvolume BTRFS я подробно рассказывал про процесс. Принцип действий будет тот-же, но subvolume должно быть только два: @ и @home. Subvolume @ мы будем использовать для корня файловой системы. Вот только нюанс в том, что установщик создаёт первый subvolume с именем @rootfs. Начнём.

Итак, дорогой друг, ты уже разметил диск, создал файловую систему и дошёл до этапа установки базовой системы. Словом, всё как в руководстве .

Итак, жми CTRL+ALT+F2 и погружайся в консоль. Осмотримся что у на по дискам:

df

Alt text

Отмонтируем всё, что касается /target

umount /dev/sda1 && umount /dev/sda3

Примонтируем нашу BTRFS для работы с ней:

mount /dev/sda3 /mnt

Посмотрим что там внутри

cd /mnt
ls

Как я и говорил, там один subvolume с именем @rootfs. Нам надо его переименовать, но система сделать это не даст. Ты же помнишь, что в BTRFS снимок - это тоже subvolume? Делаем финт ушами снимок subvolume, называем его @ и удаляем старый subvolume с именем @rootfs.

btrfs subvolume snapshot /mnt/@rootfs /mnt/@
btrfs subvolume delete /mnt/@rootfs

Создаём subvolume для домашних каталогов:

btrfs subvolume create @home

Проверяем сделанное:

btrfs subvolume list /mnt

Мы должны видеть два subvolume: @ и @home. Отмонтируем и монтируем корень уже куда надо:

umount /mnt
mount -o rw,noatime,compress=lzo,space_cache,subvol=@ /dev/sda3 /target

Создадим каталоги: mkdir -p /target/boot/efi mkdir -p /target/home

Монтируем оставшееся:

mount /dev/sda1 /target/boot/efi
    mount -o rw,noatime,compress=lzo,space_cache,subvol=@home /dev/sda3 /target/home

Alt text

Заметьте, что в отличие от предыдущей заметки я монтирую не через subvolid, а через subvol. То есть не по id, а по имени. Это важно. Там-же пишем и в fstab

nano /target/etc/fstab

Примерно так:

Alt text

Жмём CTRL+ALT+F1 и продолжаем установку.

Установка Timeshift

Timeshift - свободная программа, предназначенная для автоматического периодического резервного копирования и восстановления системы Linux. Она умеет создавать резервные копии через rsync или снимки BTRFS вручную или по расписанию. Установим:

sudo apt install timeshift

Пройдём несложную процедуру настройки и создадим тестовый снимок:

Создание снимков при работе APT

Для того, чтобы снимки автоматически создавались при установке, удалении и обновлении пакетов, необходимо поставить пакет timeshift-autosnap-apt. Начнём.

sudo apt install git make
git clone https://github.com/wmutschl/timeshift-autosnap-apt.git /home/$USER/timeshift-autosnap-apt
cd /home/$USER/timeshift-autosnap-apt
sudo make install

Проверим создание снимков установкой Midnight Commander:

sudo apt install mc

Видим, что снимок создан:

Alt text

Загрузка системы из снимка

Для этого нам потребуется пакет grub-btrfs. Установим его.

git clone https://github.com/Antynea/grub-btrfs.git /home/$USER/grub-btrfs
cd /home/$USER/grub-btrfs
sudo make install

Теперь надо включить пункт меню загрузки:

nano /etc/default/grub-btrfs/config

Раскомментируйте пункт GRUB_BTRFS_SUBMENUNAME

Alt text

Мы видим, что теперь при установке пакетов редактируется меню загрузчика GRUB:

Alt text

Теперь появилось дополнительное подменю, откуда можно загрузиться в желаемый снимок.

Alt text

Восстановление

При восстановлении снимка программа создаёт текущий снимок, чтобы восстановление можно было отменить.

Alt text

У меня не заработала кнопка “Обзор” и средствами программы мне не удалось увидеть файлы в снимке. Впрочем, снимок можно примонтировать вручную.

Программа умеет делать копии и на файловой системе EXT4 при помощи rsync.