Restic: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «[https://restic.net/ restic] — система резервного копирования, предоставляет инструменты для сохранения резервных копий в версионированном репозитории, который может размещаться на внешних серверах и в облачных хранилищах. Данные хранятся в зашифрованном виде....»)
 
(RESTIC_PASSWORD RESTIC_REPOSITORY)
 
(не показаны 2 промежуточные версии 2 участников)
Строка 103: Строка 103:
   Added:  13.437 MiB
   Added:  13.437 MiB
   Removed: 2.228 KiB</source>
   Removed: 2.228 KiB</source>
Удалять снимки можно либо вручную (указав идентификатор снимка), либо с помощью политики, описывающей, какие снимки следует удалить.
Удаление одиночного снимка и данных, на которые ссылались файлы в этом снимке:
<source lang="text" highlight="1">$ restic -r /tmp/restic-repo  forget df13e70c --prune
enter password for repository:
repository cbac5dd4 opened successfully, password is correct
[0:00] 100.00%  1 / 1 files deleted
1 snapshots have been removed, running prune
loading indexes...
loading all snapshots...
finding data that is still in use for 2 snapshots
[0:00] 100.00%  2 / 2 snapshots
searching used packs...
collecting packs for deletion and repacking
[0:00] 100.00%  8 / 8 packs processed
to repack:            0 blobs / 0 B
this removes          0 blobs / 0 B
to delete:            4 blobs / 2.776 KiB
total prune:          4 blobs / 2.776 KiB
remaining:          31 blobs / 13.579 MiB
unused size after prune: 0 B (0.00% of remaining size)
rebuilding index
[0:00] 100.00%  7 / 7 packs processed
deleting obsolete index files
[0:00] 100.00%  1 / 1 files deleted
removing 1 old packs
[0:00] 100.00%  1 / 1 files deleted
done</source>
Удаление снимков вручную чревато ошибками, поэтому restic позволяет указать политику (один или несколько параметров --keep-*), для которой следует сохранять снимки.
Например, удалить все снимки, кроме трёх последних:
<source lang="text" highlight="1">$ restic -r /tmp/restic-repo forget --keep-last 3
enter password for repository:
repository cbac5dd4 opened successfully, password is correct
Applying Policy: keep 3 latest snapshots
keep 3 snapshots:
ID        Time                Host                Tags        Reasons        Paths
---------------------------------------------------------------------------------------------
b56aab49  2022-03-30 13:02:13  comp2.example.test              last snapshot  /home/user/docs
fdf45ecf  2022-03-30 15:03:55  comp2.example.test              last snapshot  /home/user/docs
3e587f18  2022-03-30 15:04:03  comp2.example.test              last snapshot  /home/user/docs
---------------------------------------------------------------------------------------------
3 snapshots
remove 1 snapshots:
ID        Time                Host                Tags        Paths
------------------------------------------------------------------------------
44e47cf1  2022-03-30 12:54:02  comp2.example.test              /home/user/docs
------------------------------------------------------------------------------
1 snapshots
[0:00] 100.00%  1 / 1 files deleted</source>


== Восстановление данных ==
== Восстановление данных ==
Строка 150: Строка 206:
[0:00] 100.00%  9 / 9 packs
[0:00] 100.00%  9 / 9 packs
no errors were founds</source>
no errors were founds</source>
== Rest Server ==
HTTP сервер, реализующий restic's REST backend API.
У сервера есть возможность работать в append-only режиме: можно только дописывать новые резервные копии в репозиторий. В этом режиме удалить или модифицировать данные в репозитории невозможно.
[https://github.com/restic/rest-server GitHub] | [https://packages.altlinux.org/ru/p11/binary/rest-server/x86_64/ Пакет для P11]
Пакет для P11 не установится в P10, но прекрасно работает бинарник с гитхаба.
<source lang="text" highlight="1">$ rest-server --path /temp/restic-repo/ --no-auth --append-only</source>
На клиентских ПК запускаем через:
<source lang="text" highlight="1">restic.exe -r rest:http://IP:8000 --verbose backup ~/docs</source>
== RESTIC_PASSWORD и RESTIC_REPOSITORY ==
Чтобы в каждой команде не указывать путь к репозиторию и пароль, их можно указать в переменных окружения в скрипте, либо прямо в ОС.
<source lang="text" highlight="0">
export RESTIC_PASSWORD=пароль_без_кавычек
export RESTIC_REPOSITORY=путь_без_кавычек
</source>
Если указывать в ОС, то можно сразу удалить команду из истории bash:
<source lang="text" highlight="0">
export RESTIC_PASSWORD=пароль_без_кавычек RESTIC_REPOSITORY=путь_без_кавычек;history -d $(history 1)
</source>
На Windows вместо export использовать set.
rest-server не принимает путь из переменной, но принимает пароль.


{{Category navigation|title=Резервное копирование|category=Backup|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Резервное копирование|category=Backup|sortkey={{SUBPAGENAME}}}}

Текущая версия от 19:03, 11 июля 2024

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

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

Удаление одиночного снимка и данных, на которые ссылались файлы в этом снимке:

$ restic -r /tmp/restic-repo  forget df13e70c --prune
enter password for repository: 
repository cbac5dd4 opened successfully, password is correct
[0:00] 100.00%  1 / 1 files deleted
1 snapshots have been removed, running prune
loading indexes...
loading all snapshots...
finding data that is still in use for 2 snapshots
[0:00] 100.00%  2 / 2 snapshots
searching used packs...
collecting packs for deletion and repacking
[0:00] 100.00%  8 / 8 packs processed

to repack:            0 blobs / 0 B
this removes          0 blobs / 0 B
to delete:            4 blobs / 2.776 KiB
total prune:          4 blobs / 2.776 KiB
remaining:           31 blobs / 13.579 MiB
unused size after prune: 0 B (0.00% of remaining size)

rebuilding index
[0:00] 100.00%  7 / 7 packs processed
deleting obsolete index files
[0:00] 100.00%  1 / 1 files deleted
removing 1 old packs
[0:00] 100.00%  1 / 1 files deleted
done


Удаление снимков вручную чревато ошибками, поэтому restic позволяет указать политику (один или несколько параметров --keep-*), для которой следует сохранять снимки. Например, удалить все снимки, кроме трёх последних:

$ restic -r /tmp/restic-repo forget --keep-last 3 
enter password for repository: 
repository cbac5dd4 opened successfully, password is correct
Applying Policy: keep 3 latest snapshots
keep 3 snapshots:
ID        Time                 Host                Tags        Reasons        Paths
---------------------------------------------------------------------------------------------
b56aab49  2022-03-30 13:02:13  comp2.example.test              last snapshot  /home/user/docs
fdf45ecf  2022-03-30 15:03:55  comp2.example.test              last snapshot  /home/user/docs
3e587f18  2022-03-30 15:04:03  comp2.example.test              last snapshot  /home/user/docs
---------------------------------------------------------------------------------------------
3 snapshots

remove 1 snapshots:
ID        Time                 Host                Tags        Paths
------------------------------------------------------------------------------
44e47cf1  2022-03-30 12:54:02  comp2.example.test              /home/user/docs
------------------------------------------------------------------------------
1 snapshots

[0:00] 100.00%  1 / 1 files deleted

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

Восстановить данные из снимка 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

Rest Server

HTTP сервер, реализующий restic's REST backend API.

У сервера есть возможность работать в append-only режиме: можно только дописывать новые резервные копии в репозиторий. В этом режиме удалить или модифицировать данные в репозитории невозможно.

GitHub | Пакет для P11

Пакет для P11 не установится в P10, но прекрасно работает бинарник с гитхаба.

$ rest-server --path /temp/restic-repo/ --no-auth --append-only

На клиентских ПК запускаем через:

restic.exe -r rest:http://IP:8000 --verbose backup ~/docs

RESTIC_PASSWORD и RESTIC_REPOSITORY

Чтобы в каждой команде не указывать путь к репозиторию и пароль, их можно указать в переменных окружения в скрипте, либо прямо в ОС.

export RESTIC_PASSWORD=пароль_без_кавычек
export RESTIC_REPOSITORY=путь_без_кавычек

Если указывать в ОС, то можно сразу удалить команду из истории bash:

export RESTIC_PASSWORD=пароль_без_кавычек RESTIC_REPOSITORY=путь_без_кавычек;history -d $(history 1)

На Windows вместо export использовать set.

rest-server не принимает путь из переменной, но принимает пароль.