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.
Установка Restic в 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 также доступен в пользовательском репозитории Arch. Таким образом, вы можете установить его с помощью любых помощников 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 OS
$ nix-env --install restic
Установка Restic в openSUSE
$ sudo zypper install restic
Установка Restic, использую Linuxbrew
$ brew install restic
Установка Restic из исходника.
Для других операционных систем вы можете скомпилировать и установить Restic, как показано ниже. Во-первых, необходимо иметь установленный компилятор языка Go. После того, как вы его установите, необходимо склонировать репозиторий Github для Restic, следующей командой:
$ git clone https://github.com/restic/restic
Эта команда клонирует все содержимое репозитория restic в текущем рабочем каталоге.
Далее переходим в каталог restic
$ cd restic
И устанавливаем Restic, как показано ниже:
$ go run build.go
Проверяем установленную версию Restic:
$ restic version restic 0.13.1 compiled with go1.17.7 on linux/amd64
Обновление Restic
Из официальных репозиториев, зачастую, устанавливается устаревшая версия. Чтобы обновить версию до актуально, необходимо запустить следующую команду:
$ sudo restic self-update
Теперь проверяем версию.
$ restic version restic 0.14.0 compiled with go1.19 on linux/amd64
Резервное копирование и восстановление данных с помощью Restic в Linux.
Restic поддерживает следующие сущности для хранения:
- Локальный каталог;
- SFTP сервер (через SSH);
- HTTP REST сервер;
- AWS S3;
- OpenStack Swift;
- BackBlaze B2;
- Облачное хранилище Google;
- Yandex Диск;
- И много других сервисов, поддерживаемых rclone.
Теперь давайте посмотрим, как создавать резервные копии и восстанавливать данные в локальный каталог.
Создаем новый локальный репозиторий.
Во-первых, необходимо создать репозиторий для хранения резервной копии. Например, я собираюсь создать репозиторий с именем mybackup в моем домашнем каталоге.
$ restic init --repo ~/mybackup
Введите пароль и подтвердите его. Необходимо запомнить пароль для доступа к этому репозиторию. Иначе рискуете безвозвратно потерять данные, хранящиеся в репозитории. На всякий случай, предупреждаю.
enter password for new repository: enter password again: created restic repository d01fb6fe43 at /home/user/mybackup Please note that knowledge of your password is required to access the repository. Losing your password means that your data is irrecoverably lost.
Как видно из приведенного выше вывода, в папке /home/user/mybackup создается локальный репозиторий с идентификатором d01fb6fe43.
Теперь можно сделать резервную копию ваших данных во вновь созданный репозиторий.
Резервное копирование данных в локальный каталог с помощью Restic.
Я собираюсь сделать резервную копию всего каталога /mydata (включая сам каталог) в репозиторий /mybackup с помощью команды:
$ restic -r ~/mybackup backup ~/mydata
Введите пароль вашего репозитория:
enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct created new cache in /home/user/.cache/restic no parent snapshot found, will read all files Files: 4 new, 0 changed, 0 unmodified Dirs: 6 new, 0 changed, 0 unmodified Added to the repository: 3.464 KiB (2.192 KiB stored) processed 4 files, 0 B in 0:00 snapshot 772953e9 saved
Как видите, restic создал резервную копию каталога mydata. Кроме того, был создан снэпшот текущей резервной копии с уникальным именем 772953e9 .
Давайте разберем приведенную выше команду и посмотрим, что делает каждый параметр.
- restic — запуск утилиты restic
- -r — указывает репозиторий
- ~/mybackup — имя репозитория
- backup — подкоманда Restic для резервного копирования файлов/папок
- /mydata — Каталог для резервного копирования.
Добавим больше файлов/папок в каталог резервного копирования. Например, я добавил новый файл с именем test.txt в каталог /mydata. Теперь снова запустите команду restic:
$ restic -r ~/mybackup backup ~/mydata enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct using parent snapshot 772953e9 Files: 1 new, 0 changed, 4 unmodified Dirs: 0 new, 5 changed, 1 unmodified Added to the repository: 3.258 KiB (2.086 KiB stored) processed 5 files, 16 B in 0:00 snapshot fc6e505d saved
Restic будет создавать новые снимки с уникальным именем каждый раз, когда мы его запускаем.
Поскольку Restic выполняет добавочное резервное копирование, последующие резервные копии будут выполняться намного быстрее, чем предыдущие. Мы можем продолжать добавлять данные в папку резервного копирования и запускать резервное копирование для создания множества моментальных снимков.
Не только каталоги, Restic также позволяет нам создавать резервные копии отдельных файлов.
$ restic -r ~/mybackup backup ~/mydata/test.txt enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct no parent snapshot found, will read all files Files: 1 new, 0 changed, 0 unmodified Dirs: 5 new, 0 changed, 0 unmodified Added to the repository: 2.309 KiB (1.842 KiB stored) processed 1 files, 16 B in 0:00 snapshot 5281bb84 saved
Как видите, в репозитории создается новый снимок с именем 5281bb84.
Получение списка снимков.
Чтобы получить список доступных снэпшотов в локальном репозитории, запустите:
$ restic -r ~/mybackup snapshots enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct ID Time Host Tags Paths --------------------------------------------------------------------------------------------------------------- 772953e9 2022-09-06 09:54:05 computer /home/user/mydata fc6e505d 2022-09-06 14:58:41 computer /home/user/mydata 5281bb84 2022-09-06 15:06:40 computer /home/user/mydata/test.txt --------------------------------------------------------------------------------------------------------------- 3 snapshots
Как видите у меня 3 снимка, а именно 772953e9, fc6e505d и 5281bb84.
Проверить разницу между двумя снимками.
Чтобы проверить разницу между двумя снимками, мы можем использовать опцию diff, как показано ниже:
$ restic -r ~/mybackup diff 772953e9 fc6e505d
Эта команда сравнивает указанные два снимка и перечисляет различия, т. е. какие файлы были добавлены, сколько файлов и каталогов удалили из репозитория.
enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct comparing snapshot 772953e9 to fc6e505d: + /home/user/mydata/test.txt 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: 6 new, 6 removed Added: 3.258 KiB Removed: 2.878 KiB
Как видите, я добавил в резервную копию новый txt-файл.
Исключить файлы и папки.
Также можно исключить некоторые файлы или каталоги. Например, следующая команда исключит все файлы типа .doc:
$ restic -r ~/mybackup backup --exclude=*.doc ~/mydata
Кроме того, вы можете поместить фактическое расположение всех файлов и папок, которые вы хотите исключить из резервной копии в файл и указать его путь в команде резервного копирования.
Например, создайте файл с именем exclude:
$ vi exclude.txt
Добавьте файлы или папки, которые вы хотите исключить:
*.txt roadit.zip mydata/pictures
Теперь запустите процесс резервного копирования с помощью команды:
$ restic -r ~/mybackup backup --exclude-file=exclude.txt ~/mydata
Для получения более подробной информации о команде резервного копирования restic запустите:
$ restic help backup
Теперь мы успешно создали резервную копию наших данных. Далее мы увидим, как восстановить данные из локальной резервной копии.
Восстановление данных с помощью Restic.
Восстановить данные легко.
Сначала выведите список доступных снапшотов из репозитория с помощью команды:
$ restic -r ~/mybackup snapshots enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct ID Time Host Tags Paths --------------------------------------------------------------------------------------------------------------- 772953e9 2022-09-06 09:54:05 computer /home/user/mydata fc6e505d 2022-09-06 14:58:41 computer /home/user/mydata 5281bb84 2022-09-06 15:06:40 computer /home/user/mydata/test.txt e33213d2 2022-09-06 18:52:58 computer /home/user/mydata 11abc846 2022-09-06 19:04:16 computer /home/user/mydata --------------------------------------------------------------------------------------------------------------- 5 snapshots
Как видно из приведенного выше вывода, у меня есть пять снэпшотов
Чтобы восстановить данные из определенного снэпшота, например fc6e505d, запустите:.
$ restic -r ~/mybackup restore fc6e505d --target ~/mydata enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct restoring <Snapshot fc6e505d of [/home/user/mydata] at 2022-09-06 14:58:41.885650518 +0300 MSK by user@computer> to /home/user/mydata
Мы только что восстановили данные из моментального снимка fc6e505d в каталог /mydata.
Для восстановления одного файла из снэпшота делаем:
$ restic -r ~/mybackup restore e33213d2 --target ~/mydata file1
Дополнительные сведения см. в разделе справки по команде restore.
$ restic help restore
Подключить репозиторий для просмотра данных резервной копии.
Вы можете просматривать резервную копию как обычную файловую систему. Это удобно, когда вы хотите просмотреть содержимое репозитория.
Сначала создайте точку монтирования:
$ mkdir mountpoint
Затем смонтируйте репозиторий на точку монтирования moutpoint, как показано ниже.
$ restic -r ~/mybackup mount mountpoint/
Эта команда смонтирует репозиторий Restic в вашей локальной файловой системе. После чего вы сможете просматривать файлы в снэпшотах по адресу /mountpoint/snapshots
Для получения более подробной информации, проверьте раздел помощи:
$ restic help mount
Удаляем снэпшоты.
Сначала посмотрим все доступные снимки в репозитории:
$ restic -r ~/mybackup snapshots enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct ID Time Host Tags Paths --------------------------------------------------------------------------------------------------------------- 772953e9 2022-09-06 09:54:05 computer /home/user/mydata fc6e505d 2022-09-06 14:58:41 computer /home/user/mydata 5281bb84 2022-09-06 15:06:40 computer /home/user/mydata/test.txt e33213d2 2022-09-06 18:52:58 computer /home/user/mydata 11abc846 2022-09-06 19:04:16 computer /home/user/mydata --------------------------------------------------------------------------------------------------------------- 5 snapshots
Чтобы удалить снимок, например 772953e9 , выполните:
$ restic -r ~/mybackup forget 772953e9 enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct [0:00] 100.00% 1 / 1 files deleted
Проверяем, удален снимок или нет:
$ restic -r ~/mybackup snapshots enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct ID Time Host Tags Paths --------------------------------------------------------------------------------------------------------------- fc6e505d 2022-09-06 14:58:41 computer /home/local/X5/dmitry.borovik-3/mydata 5281bb84 2022-09-06 15:06:40 computer /home/local/X5/dmitry.borovik-3/mydata/test.txt e33213d2 2022-09-06 18:52:58 computer /home/local/X5/dmitry.borovik-3/mydata 11abc846 2022-09-06 19:04:16 computer /home/local/X5/dmitry.borovik-3/mydata --------------------------------------------------------------------------------------------------------------- 4 snapshots
Снимок пропал! Однако данные, на которые ссылаются файлы в этом моментальном снимке, по-прежнему хранятся в репозитории.
Чтобы очистить неиспользуемые данные, запустите:
$ restic -r ~/mybackup prune enter password for repository: repository d01fb6fe opened (repository version 2) successfully, password is correct loading indexes... loading all snapshots... finding data that is still in use for 4 snapshots [0:00] 100.00% 4 / 4 snapshots searching used packs... collecting packs for deletion and repacking [0:00] 100.00% 5 / 5 packs processed to repack: 7 blobs / 2.228 KiB this removes: 5 blobs / 1.335 KiB to delete: 0 blobs / 0 B total prune: 5 blobs / 1.335 KiB remaining: 20 blobs / 5.320 KiB unused size after prune: 0 B (0.00% of remaining size) repacking packs [0:00] 100.00% 1 / 1 packs repacked rebuilding index [0:00] 100.00% 5 / 5 packs processed deleting obsolete index files [0:00] 100.00% 4 / 4 files deleted removing 1 old packs [0:00] 100.00% 1 / 1 files deleted done
После удаления всех снимков и связанных с ними данных вы можете удалить репозиторий.
$ rm -rf ~/mybackup/
Заключение
Теперь вы знаете, как установить и использовать программу резервного копирования Restic для защиты ваших данных. Мы рассмотрели только то, как создавать резервные копии файлов и папок в локальном каталоге с помощью Restic. В моих следующих статьях увидим, как выполнять резервное копирование данных в удаленную систему и облачное хранилище.
А если Вам нравится мой сайт, и то что я делаю, то можете поддержать этот проект, собирающий в себя статьи и руководства по IT технологиям. Это можно сделать нажав, кнопочку ниже.
Was this helpful?
0 / 0