Restic

Материал из ALT Linux Wiki
Версия от 15:17, 30 марта 2022; Elena Mishina (обсуждение | вклад) (Новая страница: «[https://restic.net/ restic] — система резервного копирования, предоставляет инструменты для сохранения резервных копий в версионированном репозитории, который может размещаться на внешних серверах и в облачных хранилищах. Данные хранятся в зашифрованном виде....»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

restic — система резервного копирования, предоставляет инструменты для сохранения резервных копий в версионированном репозитории, который может размещаться на внешних серверах и в облачных хранилищах. Данные хранятся в зашифрованном виде. Restic позволяет определить правила для включения и исключения файлов и каталогов в резервную копию.

В данной статье рассмотрен процесс создания резервной копии и восстановления данных в локальном каталоге.

Установка

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

# apt-get install restic

Создание репозитория

Репозиторий — место, где хранятся резервные копии.

Локальный каталог

Создать репозиторий /tmp/restic-repo (потребуется задать пароль для репозитория):

$ restic init --repo /tmp/restic-repo
enter password for new repository: 
enter password again: 
created restic repository cbac5dd448 at /tmp/restic-repo

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is
irrecoverably lost.
Внимание! Важно запомнить пароль! Если вы его потеряете, вы не сможете получить доступ к данным, хранящимся в репозитории.


Внешний сервер с доступом по SFTP

Для возможности создания резервных копий с использованием sftp, необходимо настроить доступ на сервер ssh по ключу без пароля (т.к. restic не может подключиться к репозиторию, если сервер запрашивает учетные данные).

Создание репозитория:

$ restic -r sftp:user@host:/tmp/restic-repo init
enter password for new repository: 
enter password again: 
created restic repository 56843cf637 at sftp:user@host:/tmp/restic-repo2

Please note that knowledge of your password is required to access
the repository. Losing your password means that your data is

Создание резервной копии

Создать резервную копию каталога ~/docs (потребуется ввести пароль, заданный при создании репозитория):

$ restic -r /tmp/restic-repo backup ~/docs
enter password for repository: 
repository cbac5dd4 opened successfully, password is correct
created new cache in /home/user/.cache/restic
no parent snapshot found, will read all files

Files:           3 new,     0 changed,     0 unmodified
Dirs:            3 new,     0 changed,     0 unmodified
Added to the repo: 143.979 KiB

processed 3 files, 141.763 KiB in 0:00
snapshot 44e47cf1 saved

В результате создана резервная копия каталога ~/docs. Созданный снимок идентифицируется последовательностью шестнадцатеричных символов, в данном случае 44e47cf1.

Резервное копирование файла:

$ restic -r /tmp/restic-repo backup ~/test/alt-education-10.0.pdf

Исключить файлы типа .mp3 из резервной копии:

$ restic -r /tmp/restic-repo backup --exclude=*.mp3  ~/docs

Можно указать все файлы, которые необходимо исключить, в файле, и указать этот файл при создании резервной копии. Например:

$ cat excludes.txt
# исключить файлы mp3
*.mp3
# исключить foo/x/y/z/bar foo/x/bar foo/bar
foo/**/bar
$ restic -r /tmp/restic-repo backup --exclude-file=excludes.txt ~/docs

Управление снимками

Список всех снимков, доступных в репозитории:

$ restic -r /tmp/restic-repo snapshots
enter password for repository: 
repository cbac5dd4 opened successfully, password is correct
ID        Time                 Host                Tags        Paths
-----------------------------------------------------------------------------------------------------
44e47cf1  2022-03-30 12:54:02  comp2.example.test              /home/user/docs
b56aab49  2022-03-30 13:02:13  comp2.example.test              /home/user/docs
df13e70c  2022-03-30 13:09:03  comp2.example.test              /home/user/test/alt-education-10.0.pdf
9e0a78eb  2022-03-30 13:11:49  comp2.example.test              /home/user/docs
-----------------------------------------------------------------------------------------------------

Сравнение снимков:

$ restic -r /tmp/restic-repo diff 44e47cf1 b56aab49
enter password for repository: 
repository cbac5dd4 opened successfully, password is correct
comparing snapshot 44e47cf1 to b56aab49:

+    /home/user/docs/alt-education-10.0-ru-RU.pdf
M    /home/user/docs/test.txt

Files:           1 new,     0 removed,     1 changed
Dirs:            0 new,     0 removed
Others:          0 new,     0 removed
Data Blobs:     20 new,     1 removed
Tree Blobs:      4 new,     4 removed
  Added:   13.437 MiB
  Removed: 2.228 KiB

Восстановление данных

Восстановить данные из снимка b56aab49 в /tmp/restore:

$ restic -r /tmp/restic-repo restore b56aab49 --target /tmp/restore
enter password for repository: 
repository cbac5dd4 opened successfully, password is correct
restoring <Snapshot b56aab49 of [/home/user/docs] at 2022-03-30 13:02:13.947703656 +0200 EET by user@comp2.example.test> to /tmp/restore


Просмотр данных без восстановления

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

$ mkdir ~/restic
$ restic -r /tmp/restic-repo mount ~/restic
enter password for repository: 
repository cbac5dd4 opened successfully, password is correct
Now serving the repository at /home/user/restic
When finished, quit with Ctrl-c or umount the mountpoint.
Примечание: Для предоставления возможности монтирования файловой системы FUSE всем пользователями (по умолчанию доступно только пользователям, входящим в группу wheel), следует выполнить команду:
# control fusermount public


Репозиторий в файловом менеджере:

Репозиторий в файловом менеджере

Проверка репозитория

Проверка структуры репозитория:

$ restic -r /tmp/restic-repo check
…
load indexes
check all packs
check snapshots, trees and blobs
no errors were found
[0:00] 100.00%  4 / 4 snapshots

Проверка структуры репозитория и целостность файлов в репозитории:

$ restic -r /tmp/restic-repo check --read-data
…
load indexes
check all packs
check snapshots, trees and blobs
[0:00] 100.00%  4 / 4 snapshots
read all data
[0:00] 100.00%  9 / 9 packs
no errors were founds