Уже некоторое время я разрабатываю и использую в своём быту набор скриптов на Python для управления снимками системы. Ну а так как с названиями у меня не очень, назван этот комплект был Just Snapshot. Просто и очевидно.
Сегодня я наконец решился хоть немного показать его публике. Сразу отмечу, что пользователям Windows, как и хейтерам BTRFS, тут делать нечего.
Преимущества над популярным Timeshift
-
Возможность указать свои подразделы. То есть, Timeshift умеет бэкапить только разделы
@
и@home
, то есть стандартные разделы Ubuntu. В моём решении вы можете указать любое количество любых подразделов. -
Рекурсивный бэкап. Если внутри подраздела есть ещё подразделы, они также будут скопированы.
-
Более простой CLI-интерфейс. Каждая операция представлена своим консольным скриптом, благодаря чему пользоваться ими проще, а справка по командам влезает на экран =)
Первоначальная настройка
Ну вот вы установили пакет. В первую очередь нужно выполнить скрипт jsnapshot-setup
. И да,
все скрипты начинаются со слова jsnapshot
. После запуска данного скрипта (от рута, само собой)
вам будет предложен ряд вопросов для настройки программы. А именно, у вас спросят, с каким
диском работать, какие подразделы включить, как часто создавать автоматические снимки:
[melianmiko@fedora ~]$ sudo jsnapshot-setup
STEP 1. Select your system disk.
Mounted BTRFS volumes:
0 - /dev/sda1
Enter number of target device to use it.
Enter your choice ['0']: 0
STEP 2. Select subvolumes to backup.
Available BTRFS sub-volumes:
0 - @
Enter numbers of volumes separated with space. Example, if you want to backup first and third, enter '0 2'.
Value: 0
Selected subvolume 256 /run/jsnapshot/disk/@
STEP 3. Configure auto-snapshot timetable.
Enter count of auto-snapshots for every period. If you don't need auto-backup in some period, enter zero (0).
Enter count of hourly snapshots.
Value: 3
Enter count of daily snapshots.
Value: 0
Enter count of weekly snapshots.
Value: 0
Enter count of monthly snapshots.
Value: 0
Configuration updated. Now you can use this application.
[melianmiko@fedora ~]$
Список снимков
Используйте команду jsnapshot-list
. Обратите внимание, что название снимка — дата и время его создания.
Именно эта строка используется для указания снимка при его удалении, изменении или восстановлении.
[melianmiko@fedora ~]$ sudo jsnapshot-list
Flag Name Tags Extra info
---- 2021-11-08_21-01-01 H Auto backup
---- 2021-11-08_21-01-15 U
[melianmiko@fedora ~]$
Обозначения:
-
В столбце
Flag
отображается статус снимка. На данный момент статуса два, помимо пустого. Первый - это статусFAIL
. Если вы видите этот статус, значит снимок повреждён. Второй -BOOT
, означающий, что в данный момент ОС запущена из данного снимка, и удалить его нельзя -
В столбце
Name
отображается имя снимка, об этом говорилось чуть выше -
В столбце
Tags
отображаются тэги. ТэгиH\D\W\M
ставятся для автоматически созданных снимков, и указывают на то, по какому из таймеров создан снимок. ТэгU
означает снимок, созданный вручную. Эти снимки не будут удалены при очистке старых авто-снимков. -
Последний столбец содержит описание, заданное при создании снимка
Как создать снимок
Просто используйте команду jsnapshot-create
. По умолчанию она создаст снимок без описания, но вы можете
указать его, используя флаг --info
.
[melianmiko@fedora ~]$ sudo jsnapshot-list
Flag Name Tags Extra info
---- 2021-11-08_21-01-01 H Auto backup
---- 2021-11-08_21-01-15 U
---- 2021-11-08_21-04-36 U
[melianmiko@fedora ~]$ sudo jsnapshot-create --info "Clean Fedora 35 LXQT"
Notice: Backup to: /run/jsnapshot/disk/_backups/2021-11-08_21-04-53
Notice: Snapshot recursive: /run/jsnapshot/disk/@ => /run/jsnapshot/disk/_backups/2021-11-08_21-04-53/@
Notice: Set snapshot info: Clean Fedora 35 LXQT
Notice: Snapshot created.
[melianmiko@fedora ~]$ sudo jsnapshot-list
Flag Name Tags Extra info
---- 2021-11-08_21-01-01 H Auto backup
---- 2021-11-08_21-01-15 U
---- 2021-11-08_21-04-36 U
---- 2021-11-08_21-04-53 U Clean Fedora 35 LXQT
[melianmiko@fedora ~]$
Как удалить снимок
Используйте команду jsnapshot-delete
. В параметрах команды укажите названия снимков, которые нужно
удалить. Можно указать несколько.
[melianmiko@fedora ~]$ sudo jsnapshot-list
Flag Name Tags Extra info
---- 2021-11-08_21-01-01 H Auto backup
---- 2021-11-08_21-01-15 U
---- 2021-11-08_21-04-36 U
---- 2021-11-08_21-04-53 U Clean Fedora 35 LXQT
[melianmiko@fedora ~]$ sudo jsnapshot-delete 2021-11-08_21-01-15 2021-11-08_21-04-36
Notice: Deleting snapshot /run/jsnapshot/disk/_backups/2021-11-08_21-01-15
Notice: Deleting snapshot /run/jsnapshot/disk/_backups/2021-11-08_21-04-36
[melianmiko@fedora ~]$ sudo jsnapshot-list
Flag Name Tags Extra info
---- 2021-11-08_21-01-01 H Auto backup
---- 2021-11-08_21-04-53 U Clean Fedora 35 LXQT
[melianmiko@fedora ~]$
Как восстановить систему на один из снимков
Используйте команду jsnapshot-restore
. Первый параметр — название снимка, который нужно восстановить.
Второй — названия подразделов для восстановления, через запятую. Или all
, для восстановления всего снимка.
Обратите внимание, что для переключения на восстановленный снимок потребуется перезагрузка, которую вам
нужно выполнить вручную.
[melianmiko@fedora ~]$ sudo jsnapshot-list
Flag Name Tags Extra info
---- 2021-11-08_21-01-01 H Auto backup
---- 2021-11-08_21-04-53 U Clean Fedora 35 LXQT
[melianmiko@fedora ~]$ sudo jsnapshot-restore 2021-11-08_21-04-53 all
Warning: Recovering system with snapshot 2021-11-08_21-04-53
Notice: Backup to: /run/jsnapshot/disk/_backups/2021-11-08_21-07-20
Notice: Moving current system to new snapshot...
Notice: Moving @ => /run/jsnapshot/disk/_backups/2021-11-08_21-07-20/@
Notice: Recovering target snapshot...
Notice: Restoring _backups/2021-11-08_21-04-53/@ => @
Warning: Detected restored rootfs (@). Fstab will be patched in them!
Notice: Patching fstab file: /run/jsnapshot/disk/@/etc/fstab
Notice: Fstab saved
Notice: Restore completed. Reboot is required to apply changes.
[melianmiko@fedora ~]$ sudo jsnapshot-list
Flag Name Tags Extra info
---- 2021-11-08_21-01-01 H Auto backup
---- 2021-11-08_21-04-53 U Clean Fedora 35 LXQT
BOOT 2021-11-08_21-07-20 F Auto-snapshot before restoring: 2021-11-08_21-04-53
[melianmiko@fedora ~]$
Как видите, текущее состояние ОС перешло в один из снимков, что позволяет отменить восстановление снимка, при необходимости. После перезагрузки вы будете загружены в копию выбранного при восстановлении снимка, с авто-снапшот можно будет удалить.
На этом пока что всё, этих знаний достаточно для базового использования программы. Документация будет расширена по мере доработки программы.