Timeshift

Материал из ALT Linux Wiki

Timeshift — программа для автоматического периодического создания копий системы (снимков/snapshots).

Timeshift предназначен прежде всего для создания снимков системных файлов и настроек. Пользовательские данные по умолчанию не архивируются поэтому в случае сбоя системы, восстанавливаются системные файлы, а данные пользователей остаются в актуальном состоянии (конечно, если они не были повреждены).

Резервные копии не могут быть восстановлены на уровне отдельных файлов, восстановление всегда происходит в полном объеме настроек Timeshift.

Установка

Установить пакет timeshift:

# apt-get install timeshift

Запуск программы

Запустить Timeshift можно из «Меню запуска приложений» («Система» → «Timeshift (Программа для восстановления системы)») или из командной строки:

$ timeshift-launcher
Примечание: Потребуется ввести пароль пользователя, входящего в группу wheel.


При первом запуске будет запущен «Мастер установки». Запустить «Мастер установки» или открыть окно настроек резервного копирования также можно, нажав соответствующую кнопку на панели инструментов в окне программы Timeshift:

Интерфейс Timeshift

Настройка резервного копирования

Режим RSYNC

Особенности режима RSYNC:

  • снимки создаются путём копирования системных файлов при помощи rsync и создания жёстких ссылок на неизмененные файлы из предыдущего снимка;
  • все файлы копируются при создании первого снимка. Последующие снимки являются инкрементальными. Неизменные файлы будут связаны с предыдущим снимком, если он доступен;
  • создание первого снимка может занять до 10 минут;
  • системный раздел может быть отформатирован в любой файловой системе. Резервный раздел может быть отформатирован в любой файловой системе Linux, поддерживающей жесткие ссылки. Сохранение снимков на несистемный или внешний диск позволяет восстановить систему, даже если системный диск повреждён;
  • можно задать исключения для файлов и каталогов для экономии дискового пространства;
  • систему необходимо перезагрузить после восстановления снимка.

На вкладке «Тип» выбрать тип снимков:

Выбор режима RSYNC

Снимки имеют большой размер, поэтому желательно хранить их на другом диске или разделе. По умолчанию снимки сохраняются в системном (корневом) разделе в /timeshift, также можно выбрать другие разделы Linux.

На вкладке «Место» можно выбрать место, где будут храниться снимки:

Выбор расположения снимков RSYNC

На вкладке «Расписание» можно выбрать несколько уровней создания снимков (ежемесячно, еженедельно, ежедневно, ежечасно, при загрузке) и указать количество сохраняемых снимков для каждого уровня:

Расписание для снимков RSYNC

Снимки уровня «Загрузка» создаются при каждом запуске системы (с задержкой в 10 минут). Они выполняются в фоне и не влияют на скорость загрузки системы.

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

При выборе опции «Include only hidden files» («Включить скрытые элементы») на вкладке «Пользователи» будет выполнено резервное копирование и восстановление скрытых файлов и каталогов в домашней папке (эти папки содержат пользовательские файлы конфигурации и при необходимости могут быть включены в резервные копии):

Домашние каталоги пользователей RSYNC

На вкладке «Фильтры» можно выборочно указать, какие файлы/каталоги включать/исключать из резервного копирования (динамические каталоги исключаются по умолчанию: /dev, /proc, …):

Вкладка «Фильтры»

В данном примере из резервного копирования будут исключены все файлы mp3, все системные журналы, кроме журналов веб-сервера apache.

Редактировать шаблон можно дважды щелкнув левой кнопкой мыши по строке шаблона.

Примечание: При переборе шаблонов, срабатывает первое правило под которое подпадает текущий путь.
  • '*' в шаблоне соответствует любому компоненту пути кроме "/";
  • '**' в шаблоне соответствует любому компоненту пути, включая "/".

Например:

  • /mydir/ — каталог mydir (но не его содержимое);
  • /mydir/* — все файлы и каталоги в mydir (но не содержимое вложенных каталогов);
  • /mydir/** — все файлы и каталоги в mydir (включая содержимое вложенных каталогов, рекурсивно);
  • /mydir/*** — соответствует как каталогу mydir (как если бы было указано «/mydir/»), так и всему содержимому этого каталога (как если бы было указано «/mydir/**»).

Для того чтобы исключить из снимка содержимое каталога, но сам каталог оставить, нужно указать в шаблоне '/mydir/**', а не '/mydir/' (для каталога указание "/" в конце обязательно).

Шаблон не начинающийся с '/' проверяется с конца строки.

Если шаблон начинается на "+", то он рассматривается как включающий шаблон.

Подробнее см. man rsync.


Примечание: Не рекомендуется включать пользовательские данные в резервные копии, так как они будут перезаписаны при восстановлении снимка.


Просмотреть итоговый список исключений можно, нажав кнопку «Кратко» на вкладке «Фильтры»:

Итоговый список исключений

Режим BTRFS

Особенности режима BTRFS:

  • снимки создаются с использованием встроенных средств файловой системы BTRFS;
  • снимки создаются и восстанавливаются мгновенно (создание снимков — это атомарная транзакция на уровне файловой системы);
  • снимки восстанавливаются путём замены системных подразделов. Поскольку файлы никогда не копируются, не удаляются и не перезаписываются, риск потери данных отсутствует. Существующая система сохраняется как новый снимок после восстановления;
  • снимки сохраняются на том же диске, с которого они созданы (системном диске). Хранение на других дисках не поддерживается. Если системный диск выйдет из строя, снимки, хранящиеся на нём, будут потеряны вместе с системой;
  • нет возможности исключать файлы и каталоги;
  • размер снимков BTRFS изначально равен нулю. При изменении системных файлов, данные записываются в новые блоки данных, которые занимают дисковое пространство (копирование при записи). Файлы в снимке продолжают указывать на исходные блоки данных;
  • ОС должна быть установлена на раздел BTRFS с разбивкой на подразделы @ и @home (см. Btrfs). Другие виды разделов не поддерживаются;
  • снимки можно восстановить без немедленной перезагрузки запущенной системы.

На вкладке «Тип» выбрать тип снимков:

Выбор режима BTRFS

Настоятельно рекомендуется использовать моментальные снимки BTRFS в системах, установленных в разделе BTRFS.


На вкладке «Место» указать устройство, где будут храниться снимки:

Выбор расположения снимков BTRFS

На вкладке «Расписание» можно выбрать несколько уровней создания снимков (ежемесячно, еженедельно, ежедневно, ежечасно, при загрузке) и указать количество сохраняемых снимков для каждого уровня:

Расписание для снимков BTRFS

Снимки уровня «Загрузка» создаются при каждом запуске системы (с задержкой в 10 минут). Они выполняются в фоне и не влияют на скорость загрузки системы.

Т.к. Timeshift не предназначен для резервного копирования пользовательских данных, по умолчанию домашние каталоги пользователей не включаются в резервную копию. На вкладке «Пользователи» можно включить подраздел @home в создаваемые снимки:

Домашние каталоги пользователей BTRFS

Создание снимков

Снимки будут создаваться автоматически согласно настроенному расписанию.

Для создания снимка в ручном режиме следует нажать кнопку «Создать» на панели инструментов. Создание снимка в режиме RSYNC:

Создание снимка в режиме RSYNC

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

Снимки можно восстановить либо из работающей системы (оперативное восстановление), либо из другой системы, на которой установлен Timeshift (автономное восстановление).

Снимки можно восстановить, выбрав снимок в главном окне и нажав кнопку «Восстановить» на панели инструментов.

Примечание: Если основная система не загружается, то можно загрузиться с Live CD, установить Timeshift, на вкладке «Место» указать расположение снимков и восстановить снимок в основной системе:


Восстановление снимка в Live CD


Для завершения процесса восстановления требуется перезагрузка системы.

При восстановлении снимка в режиме RSYNC после нажатия кнопки «Восстановить» можно выбрать устройство, куда будут восстановлены файлы, указать нужно ли переустанавливать GRUB (кнопка «Параметры загрузчика»):

Восстановление снимка в режиме RSYNC

на следующем шаге будут показаны файлы, которые будут созданы/восстановлены/удалены в процессе восстановления снимка (только в режиме RSYNC):

Восстановление снимка в режиме RSYNC

Работа с Timeshift в командной строке

Вывод справки о команде:

$ timeshift

Если параметры не указаны, например при создании снимка, значения по умолчанию будут загружены из конфигурации приложения.

Просмотр списка снимков:

# timeshift --list

/dev/sda2 is mounted at: /run/timeshift/backup, options: rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/

Device : /dev/sda2
UUID   : 9306bd96-eaee-41d9-a65d-6385c68357d2
Path   : /run/timeshift/backup
Mode   : BTRFS
Status : OK
5 snapshots, 107.4 GB free

Num     Name                 Tags  Description                             
------------------------------------------------------------------------------
0    >  2021-12-28_16-56-22  O                                             
1    >  2021-12-28_17-01-26  O                                             
2    >  2021-12-29_08-48-49  O                                             
3    >  2021-12-29_15-40-02  O D                                           
4    >  2021-12-29_15-41-48  O     Before restoring '2021-12-28 17:01:26'

Создание снимка:

# timeshift --create

Пример:

# timeshift --create --comments "after update" --tags D
Using system disk as snapshot device for creating snapshots in BTRFS mode

/dev/sda2 is mounted at: /run/timeshift/backup, options: rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/

Creating new backup...(BTRFS)
Saving to device: /dev/sda2, mounted at path: /run/timeshift/backup
Created directory: /run/timeshift/backup/timeshift-btrfs/snapshots/2021-12-29_16-06-38
Created subvolume snapshot: /run/timeshift/backup/timeshift-btrfs/snapshots/2021-12-29_16-06-38/@
Created control file: /run/timeshift/backup/timeshift-btrfs/snapshots/2021-12-29_16-06-38/info.json
BTRFS Snapshot saved successfully (0s)
Tagged snapshot '2021-12-29_16-06-38': ondemand
------------------------------------------------------------------------------

Создание снимка, если он запланирован (есть в расписании):

# timeshift --check

Восстановить снимок (параметры будут запрошены в интерактивном режиме):

# timeshift --restore

Восстановить снимок:

# timeshift --restore --snapshot '2021-12-28_17-01-26'


Восстановить определенный снимок в необходимый раздел (для rsync):

# timeshift --restore --snapshot 1 --target /dev/sda2

Удалить снимок:

# timeshift --delete --snapshot '2021-12-28_17-01-26'