Just Snapshot: удобный способ делать снимки состояния в Linux. Базовая документация.

Уже некоторое время я разрабатываю и использую в своём быту набор скриптов на 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 ~]$ 

Как видите, текущее состояние ОС перешло в один из снимков, что позволяет отменить восстановление снимка, при необходимости. После перезагрузки вы будете загружены в копию выбранного при восстановлении снимка, с авто-снапшот можно будет удалить.


На этом пока что всё, этих знаний достаточно для базового использования программы. Документация будет расширена по мере доработки программы.

Показать комментарии

Представляются сервисом Disqus. Реклама, отображаемая после нажатия на кнопку выше, не принадлежит владельцам сайта.