В данной статье мы разберем настройку инкрементного резервного копирования с помощью инструмента restic. Мы уже писали о реализации резервного копирования с помощью duplicity, однако, вы можете попробовать и этот инструмент.
Утилита restic разработана на языке программирования Go. Преимущества этого инструмента заключаются в следующем:
- простое управление;
- скорость создания резервных копий ограничена только пропускной способностью дискового устройства и сетью;
- возможность проверки целостности данных;
- поддержка шифрования резервных копий с помощью AES-256;
- инкрементное резервное копирование значительно сокращает необходимое место для хранения данных резервных копий;
- множество протоколов удаленного хранилища — sftp , rest server , amazon s3 , minio server , openstack swift , backblaze b2 , microsoft azure blob storage , google cloud storage , rclone;
- утилита бесплатна.
Установка Restic
Установить restic можно следующими командами:
Arch linux
pacman -S restic
Debian/Ubuntu
apt-get install restic (или apt install restic)
Fedora
dnf install restic
MacOS
brew install restic
Nix & NixOS
nix-env --install restic
OpenBSD
pkg_add restic
FreeBSD
pkg install restic
RHEL & Centos
yum install yum-plugin-copr yum copr enable copart/restic yum install restic
Альтернативная установка для Centos 7
yum-config-manager --add-repo https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo yum install restic
Windows
Установка работает через Scoop (эмулятор командной консоли Linux для Windows).
scoop install restic
Docker контейнер
docker pull restic/restic
Настройка резервного копирования на удаленное хранилище SFTP с использованием ключей SSH
После установки приступаем к настройке. Создайте пару ключей для пользователя, из под которого будет выполняться резервное копирование с помощью следующей команды:
ssh-keygen -t rsa -b 4096
или используйте имеющийся (если вы ранее генерировали).
После генерации выполните подключение используя ваши логин и пароль с помощью любого доступного протокола к хранилищу. Далее примеры будут приводиться для файлового хранилища НетПоинт c1-ftp1.netpoint-dc.com.
На хранилище создайте файл authorized_keys в директории .ssh . Скопируйте данные из файла на сервере
cat /root/.ssh/id_rsa.pub
Поместите данные в файл authorized_keys и нажмите «Сохранить». Если файла нет, создайте его.
После того, как вы сформировали authorized_keys, подключение к серверу должно устанавливаться без запроса пароля:
#(Вместо "<username>" укажите имя пользователя хранилища. Подтвердите сертификат, если команда запросит подтверждение) sftp <username>@c1-ftp1.netpoint-dc.com
Первое подключение выполнено и теперь можно подключаться используя файл ключа через restic. Первым делом нам необходимо инициализировать хранилище и задать парольную фразу. Выполните следующую команду для инициализации:
#(Вместо "<username>" укажите имя пользователя хранилища. restic -r sftp:<username>@c1-ftp1.netpoint-dc.com:/_data/ init
Во время инициализации утилита попросит задать пароль. Придумайте надежную парольную фразу и введите ее два раза. Можете воспользоваться нашим генератором надежных паролей.
Запишите парольную фразу, чтобы не забыть и иметь возможность восстановить резервные копии. Если парольная фраза потеряется и вы не будете ее знать — вы не сможете восстановить свои резервные копии.
enter password for new backend: enter password again: (в данных строках укажите свою парольную фразу во время инициализации)
Выполнение резервного копирования
После инициализации можно выполнить команду резервного копирования. При первом запуске команды будет создана полная резервная копия.
#(Вместо "<username>" укажите имя пользователя хранилища. Во время резервного копирования вам нужно будет ввести парольную фразу) restic -r sftp:<username>@c1-ftp1.netpoint-dc.com:/_data backup /etc
В примере выполняется резервное копирование директории /etc . Указывается параметр -r для определения хранилища и его путь.
Проверка доступных резервных копий и восстановление
Проверить состояние резервной копии можно таким образом:
restic -r sftp:<username>@c1-ftp1.netpoint-dc.com:/_data snapshots
После определения имени резервной копии (у каждого снимка есть свой уникальный идентификатор) можно сделать восстановление:
restic -r sftp:<username>@c1-ftp1.netpoint-dc.com:/_data restore ID-snapshot --target /tmp/restore-folder
Удаление старых снимков
Для удаления старых снимков можно использовать следующую команду
restic -r sftp:name@c1-ftp1.netpoint-dc.com:/_data forget --keep-daily 7 --keep-monthly 2 # --keep-daily задает количество ежедневных резервных копий # --keep-last задает количество резервных копий (сколько всего копий хранить) # --keep-hourly параметр задает количество резервных копий, если резервное копирование выполняется каждый час # --keep-weekly задает количество еженедельных резервных копий # --keep-monthly задает количество ежемесячных резервных копий # --keep-yearly задает количество ежегодных резервных копий
Автоматизация ввода пароля
Для автоматизации ввода пароля резервных копий можно использовать переменную окружения RESTIC_PASSWORD или RESTIC_PASSWORD_FILE, если пароль хранится в файле.
Полная документация к restic доступна на сайте утилиты.