Резервное копирование и восстановление данных с помощью 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 поддерживает следующие серверные части для хранения резервной копии:
- Локальный каталог,
- sftp-сервер (через SSH),
- HTTP REST-сервер,
- АВС С3,
- ОпенСтек Свифт,
- БэкБлейз Б2,
- Хранилище BLOB-объектов Microsoft Azure,
- Облачное хранилище Google,
- И многие другие сервисы через 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