Всем привет, на связи Уханов. В прошлом посте мы поприкалыавались на тему создания автоматических снимков файловой системы BTRFS в Debian. Тогда в конце заметки я упомянул, что Grub можно научить грузить систему прямо из снимка. Давайте сделаем это, а заодно, рассмотрим другую программу для управления снимками.
Нюанс установки системы
В посте про установку Debian на subvolume BTRFS я подробно рассказывал про процесс. Принцип действий будет тот-же, но subvolume должно быть только два: @ и @home. Subvolume @ мы будем использовать для корня файловой системы. Вот только нюанс в том, что установщик создаёт первый subvolume с именем @rootfs. Начнём.
Итак, дорогой друг, ты уже разметил диск, создал файловую систему и дошёл до этапа установки базовой системы. Словом, всё как в руководстве .
Итак, жми CTRL+ALT+F2 и погружайся в консоль. Осмотримся что у на по дискам:
df
Отмонтируем всё, что касается /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
Заметьте, что в отличие от предыдущей заметки я монтирую не через subvolid, а через subvol. То есть не по id, а по имени. Это важно. Там-же пишем и в fstab
nano /target/etc/fstab
Примерно так:
Жмём 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
Видим, что снимок создан:
Загрузка системы из снимка
Для этого нам потребуется пакет 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
Мы видим, что теперь при установке пакетов редактируется меню загрузчика GRUB:
Теперь появилось дополнительное подменю, откуда можно загрузиться в желаемый снимок.
Восстановление
При восстановлении снимка программа создаёт текущий снимок, чтобы восстановление можно было отменить.
У меня не заработала кнопка “Обзор” и средствами программы мне не удалось увидеть файлы в снимке. Впрочем, снимок можно примонтировать вручную.
Программа умеет делать копии и на файловой системе EXT4 при помощи rsync.