Резервное копирование. Restic
2025-08-17
·
3 мин. для прочтения
Резервное копирование. Restic.
Содержание
1 Общая информация
- Сайт: https://restic.net/
- Репозиторий: https://github.com/restic/restic
2 Установка
- Debian:
sudo apt install restic
- RHEL:
sudo dnf install restic
- Gentoo:
emerge app-backup/restic
3 Сохранение пароля репозитория restic в pass
- Для безопасности будем хранить пароль в pass.
- Менеджер паролей pass
3.1 Пароль репозитория
- Создать пароль репозитория:
pass insert sysadmin/$(hostnamectl hostname)/restic
- Введите пароль от репозитория Restic при запросе.
3.2 Проверьте пароль
pass show sysadmin/$(hostnamectl hostname)/restic
4 Внешний сервер с доступом по SFTP
4.1 Ключ ssh
- Для возможности создания резервных копий с использованием sftp, необходимо настроить доступ на сервер ssh по ключу без пароля (т.к. restic не может подключиться к репозиторию, если сервер запрашивает учетные данные).
- Для использования определённого ключа настройте конфигурационный файл
~/.ssh/config
:Host foo IdentityFile ~/.ssh/foo-secret-key-file
- Можно создать полную конфигурацию для соединения в
~/.ssh/config
:Host foo-restic User username Port 22 IdentityFile ~/.ssh/foo-secret-key-file Hostname foo
- Тогда подключаться надо будет так:
restic -r sftp://foo-restic//some/dir
4.2 Инициализация репозитория на SFTP
- Инициализация:
restic -r sftp://user@example.com:22//path/to/backup-repo --password-command "pass sysadmin/$(hostnamectl hostname)/restic" init
- Двойной слеш (
//
) для случая абсолютной адресации (от корня).
4.3 Сделать резервную копию
- Сделать резервную копию:
restic -r sftp://user@example.com/backup-repo --ssh-command "ssh -i ~/.ssh/key" --password-command "pass sysadmin/$(hostnamectl hostname)/restic" backup /важные_данные
5 Автоматизация бэкапов
5.1 Создайте файл с паролем
echo "ваш_пароль_репозитория" > ~/.restic-password
chmod 600 ~/.restic-password
5.2 Скрипт для бэкапа
- Создайте файл
~/backup-script.sh
:
#!/bin/bash
# Настройки
REPO="sftp:user@example.com:/backup-repo"
SOURCE="/важные_данные"
# Команда бэкапа
restic -r $REPO \
--password-command "pass sysadmin/$(hostnamectl hostname)/restic" \
backup $SOURCE
# Очистка старых бэкапов (храним: 7 дневных, 4 недельных, 6 месячных)
restic -r $REPO \
--password-command "pass sysadmin/$(hostnamectl hostname)/restic" \
forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6
# Оптимизация репозитория
restic -r $REPO \
--password-command "pass sysadmin/$(hostnamectl hostname)/restic" \
prune
- Сделайте скрипт исполняемым:
chmod +x ~/backup-script.sh
5.3 Настройте cron для ежедневных бэкапов
- Добавьте строку (пример для ежедневного бэкапа в 2:00) в cron:
0 2 * * * /bin/bash /home/ваш_пользователь/backup-script.sh >> /var/log/restic.log 2>&1
6 Обслуживание резервных копий
6.1 Проверка целостности
- Проверим целостность резервной копии:
restic -r sftp://user@example.com/backup-repo --ssh-command "ssh -i ~/.ssh/key" --password-command "pass sysadmin/$(hostnamectl hostname)/restic" check
6.2 Просмотр списка резервных копий
- Список резервных копий:
restic -r sftp://user@example.com/backup-repo --ssh-command "ssh -i ~/.ssh/key" --password-command "pass sysadmin/$(hostnamectl hostname)/restic" snapshots
7 Восстановление данных
7.1 Восстановление последнего снимка
- Восстановим последний снимок:
restic -r sftp://user@example.com/backup-repo --ssh-command "ssh -i ~/.ssh/key" --password-command "pass sysadmin/$(hostnamectl hostname)/restic" restore latest --target /путь/восстановления