Поиск по сайту:

Резервное копирование и восстановление данных с помощью Restic в Linux

В этом руководстве объясняется, что такое Restic, как установить Restic в различных дистрибутивах Linux и, наконец, как резервное копирование и восстановление данных с помощью Restic в операционных системах Linux.

Restic — быстрое, безопасное и эффективное приложение для резервного копирования

Restic — это быстрая, безопасная и кроссплатформенная программа резервного копирования с открытым исходным кодом. Это позволяет сохранять несколько версий файлов и каталогов в зашифрованном репозитории, хранящемся на разных серверах.

Restic использует криптографию, чтобы гарантировать конфиденциальность и целостность ваших данных. Он шифрует данные с помощью AES-256 в режиме счетчика и аутентифицирует их с помощью Poly1305-AES кода аутентификации криптографического сообщения.

Резервное копирование и восстановление данных с помощью Restic — это просто и очень быстро! Он передает только измененные файлы (инкрементное резервное копирование), как и Rsync.

Используя Restic, мы можем легко создавать резервные копии файлов и каталогов на локальном диске, в удаленной системе или в облачном хранилище. Restic поддерживает популярные серверные части облачных хранилищ, такие как AWS, Azure, BackBlaze, Google Cloud, OpenStack и некоторые другие.

Restic написан с использованием языка программирования Go, а его исходный код свободно доступен на GitHub. Это кроссплатформенное приложение для резервного копирования. Он поддерживает GNU/Linux, macOS, FreeBSD, openBSD и Microsoft Windows.

Установить Рестик в Linux

Restic упакован для популярных операционных систем Linux.

Установить Restic в Alpine Linux:

sudo apk add restic

Установить Restic в Arch Linux, EndeavourOS, Manjaro Linux:

Restic доступен в репозиториях Arch Linux по умолчанию. Убедитесь, что репозиторий [Community] включен, и установите Restic в Arch Linux и его вариантах, таких как EndeavourOS, Manjaro Linux, с помощью Pacman, как показано ниже.

sudo pacman -S restic

Установить Restic из AUR:

Restic также доступен в AUR. Таким образом, вы можете установить его с помощью любых помощников AUR, таких как Paru или Yay, в системах на базе Arch.

paru -S restic-git

Или,

yay -S restic-git

Установить Restic в Debian, Ubuntu, Linux Mint, Pop_OS!:

sudo apt-get install restic

Установить Restic в Fedora:

sudo dnf install restic

Установите Restic в RHEL, CentOS, AlmaLinux и Rocky Linux:

sudo dnf copr enable copart/restic
sudo dnf install restic

Установить Restic в Solus:

sudo eopkg install restic

Установить Restic в ОС Nix:

nix-env --install restic

Установить Restic в openSUSE:

sudo zypper install restic

Установите Restic с помощью Linuxbrew:

brew install restic

Установить Restic из исходного кода:

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

  • Как установить язык Go в Linux

После установки Go выполните git clone restic github-репозиторий:

git clone https://github.com/restic/restic

Эта команда клонирует все содержимое репозитория restic в текущий рабочий каталог.

Перейдите в каталог restic:

cd restic

И установите Restic, как показано ниже:

go run build.go

Проверьте установленную версию Restic:

$ restic version
restic 0.12.0 compiled with go1.14.12 on linux/amd64

Обновить Рестик

Если вы установили Restic из официальных репозиториев, возможно, это устаревшая версия.

Чтобы обновить Restic до последней версии, запустите:

sudo restic self-update

Теперь проверьте его версию командой:

$ restic version
restic 0.12.1 compiled with go1.16.6 on linux/amd64

Резервное копирование и восстановление данных с помощью Restic в Linux

Restic поддерживает следующие серверные части для хранения резервной копии:

  1. Локальный каталог,
  2. sftp-сервер (через SSH),
  3. HTTP REST-сервер,
  4. АВС С3,
  5. ОпенСтек Свифт,
  6. БэкБлейз Б2,
  7. Хранилище BLOB-объектов Microsoft Azure,
  8. Облачное хранилище Google,
  9. И многие другие сервисы через rclone.

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

Создать новый локальный репозиторий

Сначала давайте создадим репозиторий для хранения резервной копии. Например, я собираюсь создать репозиторий с именем mybackup в своем каталоге $HOME.

restic init --repo ~/mybackup

Дважды введите пароль от репозитория. Вы должны запомнить пароль, чтобы получить доступ к этому хранилищу позже. В противном случае вы безвозвратно потеряете данные, хранящиеся в репозитории. Вы были предупреждены!

enter password for new repository: 
enter password again: 
created restic repository c1c5bcfdb8 at /home/sk/mybackup

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

Создайте локальный репозиторий с помощью Restic.

Как вы видите в приведенном выше выводе, локальный репозиторий restic с идентификатором c1c5bcfdb8 создается по адресу /home/sk/mybackup местоположение.

Теперь пришло время сделать резервную копию ваших данных во вновь созданном хранилище.

Резервное копирование данных в локальный каталог с помощью Restic

Я собираюсь сделать резервную копию всего каталога ~/mydata (включая сам каталог) в репозиторий ~/mybackup используя команду:

restic -r ~/mybackup backup ~/mydata

Введите пароль вашего репозитория:

Пример вывода:

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
no parent snapshot found, will read all files

Files:           7 new,     0 changed,     0 unmodified
Dirs:            4 new,     0 changed,     0 unmodified
Added to the repo: 21.919 MiB

processed 7 files, 21.913 MiB in 0:00
snapshot 7457d80e saved

Сделайте резервную копию каталога в локальном репозитории с помощью Restic.

Как видите, restic создал резервную копию данного каталога, то есть mydata. Кроме того, я создал снимок текущей резервной копии с уникальным именем 7457d80e.

Давайте разберем приведенную выше команду и посмотрим, что делает каждая опция.

  • restic: команда restic.
  • -r: указывает репозиторий.
  • ~/mybackup : имя репозитория.
  • backup — подкоманда Restic для резервного копирования файлов/папок.
  • ~/mydata — каталог для резервного копирования.

Добавьте больше файлов/папок в каталог резервной копии. Например, я добавил новый файл с именем vi editor.pdf в каталог ~/mydata. Теперь снова запустите ту же команду restic:

$ restic -r ~/mybackup backup ~/mydata
enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
using parent snapshot 7457d80e

Files:           1 new,     0 changed,     7 unmodified
Dirs:            0 new,     3 changed,     1 unmodified
Added to the repo: 50.123 KiB

processed 8 files, 21.957 MiB in 0:00
snapshot 963d4de3 saved

Добавьте новые данные в репозиторий с помощью Restic

Restic будет продолжать создавать новые снимки с уникальным именем каждый раз, когда мы его запускаем.

Поскольку Restic выполняет инкрементное резервное копирование, последующие резервные копии будут выполняться намного быстрее, чем предыдущие. Мы можем продолжать добавлять данные в папку резервной копии и запускать резервное копирование, чтобы создать множество снимков.

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

restic -r ~/mybackup backup ~/mydata/vi\ editor.pdf 

Пример вывода:

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
no parent snapshot found, will read all files

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

processed 1 files, 45.139 KiB in 0:00
snapshot 59439d78 saved

Как видите, в репозитории создается новый снимок с именем 59439d78.

Получение списка снимков

Чтобы просмотреть доступные снимки в локальном репозитории, запустите:

restic -r ~/mybackup snapshots

Пример вывода:

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
ID        Time                 Host        Tags        Paths
----------------------------------------------------------------------
7457d80e  2021-08-13 12:51:58  ostechnix               /home/sk/mydata
963d4de3  2021-08-13 12:57:55  ostechnix               /home/sk/mydata
----------------------------------------------------------------------
2 snapshots

Получение списка снимков

Как видите, у меня есть 2 снимка, а именно 7457d80e и 963d4de3.

Проверьте разницу между двумя снимками

Чтобы проверить разницу между двумя снимками, мы можем использовать опцию diff, как показано ниже:

restic -r ~/mybackup diff 7457d80e 963d4de3

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

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
comparing snapshot 7457d80e to 963d4de3:

+    /home/sk/mydata/vi editor.pdf

Files:           1 new,     0 removed,     0 changed
Dirs:            0 new,     0 removed
Others:          0 new,     0 removed
Data Blobs:      1 new,     0 removed
Tree Blobs:      4 new,     4 removed
  Added:   50.123 KiB
  Removed: 4.511 KiB

Проверьте разницу между двумя снимками

Как видите, я добавил в резервную копию новый PDF-файл.

Исключить файлы и папки

Также возможно исключить некоторые файлы или каталоги. Например, следующая команда исключит все файлы типа .doc:

restic -r ~/mybackup backup --exclude=*.doc ~/mydata

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

Например, создайте файл с именем exclude:

vi exclude.txt

Добавьте файлы или папки, которые хотите исключить:

*.txt
ostechnix.zip
mydata/movies

Теперь запустите процесс резервного копирования с помощью команды:

restic -r ~/backup backup --exclude-file=exclude.txt ~/mydata

Для получения более подробной информации о команде restic backup выполните:

restic help backup

Теперь мы успешно создали резервную копию наших данных. Далее мы увидим, как восстановить данные из локальной резервной копии.

Восстановить данные с помощью Restic

Восстановить данные легко!

Сначала перечислите доступные снимки из репозитория с помощью команды:

restic -r ~/mybackup snapshots

Пример вывода:

repository c1c5bcfd opened successfully, password is correct
ID        Time                 Host        Tags        Paths
----------------------------------------------------------------------
7457d80e  2021-08-13 12:51:58  ostechnix               /home/sk/mydata
963d4de3  2021-08-13 12:57:55  ostechnix               /home/sk/mydata
----------------------------------------------------------------------
2 snapshots

Как вы видите в приведенном выше выводе, у меня есть два снимка.

Чтобы восстановить данные из определенного снимка, например 7457d80e, выполните:

restic -r ~/mybackup restore 7457d80e --target ~/mydata

Пример вывода:

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
restoring <Snapshot 7457d80e of [/home/sk/mydata] at 2021-08-13 12:51:58.592771333 +0530 IST by sk@ostechnix> to /home/sk/mydata

Восстановить данные с помощью Restic

Мы только что восстановили данные из снимка 7457d80e в каталог ~/mydata.

Чтобы восстановить один файл из снимка, мы делаем:

restic -r ~/mybackup restore 7457d80e --target ~/mydata file.json

Более подробную информацию можно найти в разделе справки по команде restore.

restic help restore

Подключите репозиторий для просмотра данных резервной копии

Вы можете просматривать резервную копию как обычную файловую систему. Это удобно, если вы хотите просмотреть содержимое репозитория.

Сначала создайте точку монтирования:

mkdir ostechnix

Затем смонтируйте свой репозиторий в точке монтирования ostechnix, как показано ниже.

restic -r ~/mybackup mount ostechnix/

Эта команда смонтирует репозиторий Restic в вашей локальной файловой системе.

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
Now serving the repository at ostechnix/
When finished, quit with Ctrl-c or umount the mountpoint.

Теперь откройте файловый менеджер и вы увидите, что ваш репозиторий смонтирован там. Перейдите в папку снимков и проверьте данные.

Подключить репозиторий Restic в файловую систему

Когда вы закончите, нажмите Ctrl-c, чтобы выйти или размонтировать точку монтирования из диспетчера файлов.

Для получения более подробной информации посетите раздел помощи:

restic help mount

Удаление снимков

Сначала перечислите все доступные снимки в репозитории:

$ restic -r ~/mybackup snapshots
enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
ID        Time                 Host        Tags        Paths
----------------------------------------------------------------------
7457d80e  2021-08-13 12:51:58  ostechnix               /home/sk/mydata
963d4de3  2021-08-13 12:57:55  ostechnix               /home/sk/mydata
----------------------------------------------------------------------
2 snapshots

Чтобы удалить снимок, например 963d4de3, выполните:

restic -r ~/mybackup forget 963d4de3

Пример вывода:

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
[0:00] 100.00%  1 / 1 files deleted

Проверьте, удален ли снимок или нет:

$ restic -r ~/mybackup snapshots
enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
ID        Time                 Host        Tags        Paths
----------------------------------------------------------------------
7457d80e  2021-08-13 12:51:58  ostechnix               /home/sk/mydata
----------------------------------------------------------------------
1 snapshots

Удаление снимков с помощью Restic

Снимок пропал! Однако данные, на которые ссылаются файлы в этом снимке, по-прежнему хранятся в репозитории.

Чтобы очистить неиспользуемые данные, запустите:

restic -r ~/mybackup prune

Пример вывода:

enter password for repository: 
repository c1c5bcfd opened successfully, password is correct
loading indexes...
loading all snapshots...
finding data that is still in use for 1 snapshots
[0:00] 100.00%  1 / 1 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:            5 blobs / 50.279 KiB
total prune:          5 blobs / 50.279 KiB
remaining:           25 blobs / 21.919 MiB
unused size after prune: 0 B (0.00% of remaining size)

rebuilding index
[0:00] 100.00%  6 / 6 packs processed
deleting obsolete index files
[0:00] 100.00%  3 / 3 files deleted
removing 2 old packs
[0:00] 100.00%  2 / 2 files deleted
done

После удаления всех снимков и связанных с ними данных вы можете удалить репозиторий.

rm -fr ~/mybackup/

Заключение

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

Я также рекомендую вам ознакомиться с официальной документацией Restic для более подробного использования.

Ресурсы:

  • Веб-сайт Restic
  • Репозиторий Restic GitHub

Связанное чтение:

  • Как сделать резервную копию всей вашей системы Linux с помощью Rsync
  • Как создать резервную копию файлов и каталогов с помощью Rsync в Linux
  • Как создать резервную копию и восстановить файлы с помощью Deja Dup в Linux
  • Как настроить сервер резервного копирования с помощью Rsnapshot
  • Как сделать резервную копию и восстановить систему Linux с помощью Timeshift
  • Как синхронизировать файлы с Unison в Linux
  • Как синхронизировать локальные и удаленные каталоги в Linux
  • Как синхронизировать файлы и каталоги с помощью Zaloha.sh
  • CYA — утилита для создания снимков и восстановления системы для Linux

Статьи по данной тематике