Как настроить резервное копирование файлов в Linux с помощью Borg Backup

BorgBackup — это приложение для резервного копирования файлов с поддержкой дедупликации.
Основные возможности
- Эффективное хранение
- Каждый файл разбивается на порции (chunks) и добавляется в репозиторий резервных копий если его там ещё не присутствовало.
- Скорость работы
- Приложение написано на Python, но критические участки реализованы на C/Python. Используется кэширование и индексирование данных.
- Поддержка сжатия
- Поддерживаются четыре вида сжатия данных: lz4, zstd, zlib и lzma.
- Поддержка шифрования
- Данные можно зашифровать с помощью 256-битного AES, целостность данных проверяется с помощью HMAC-SHA256.
Установка
Авторы Borg позаботились о своих пользователях, поэтому он доступен под все популярные Linux\Unix платформы.
Для CentOS 7 приложение доступно в EPEL репозитарии:
yum -y install epel-release yum -y install borgbackup
Настройка архивирования
В качестве примера настроим резервное копирование для сайта test.ru. Файлы сайта расположены в каталоге /var/www/test.ru/html
.
Borg использует понятие репозитория — это хранилище резервных копий. Создадим для нашего сайта отдельный репозиторий, без шифрования данных:
borg init --encryption=none /mnt/backups/test.ru
Смотрим информацию по репозиторию:
[root@server ~]# borg info /mnt/backups/test.ru Repository ID: df114c32702740844c3f05b38e0192d68af0670e4a1a381214394186fd1537eb Location: /mnt/backups/test.ru Encrypted: No Cache: /root/.cache/borg/df114c32702740844c3f05b38e0192d68af0670e4a1a381214394186fd1537eb Security dir: /root/.config/borg/security/df114c32702740844c3f05b38e0192d68af0670e4a1a381214394186fd1537eb ------------------------------------------------------------------------------ Original size Compressed size Deduplicated size All archives: 0 B 0 B 0 B Unique chunks Total chunks Chunk index: 0 0
Видим что пока пусто. Сделаем первую резервную копию:
borg create /mnt/backups/test.ru::site /var/www/test.ru/html
Внутри каждого репозитария может храниться множество архивов. Например, мы можем отдельно архивировать папку uploads для сайта. Поэтому в команде мы указали имя архива — site
. Для отдельного архивирования uploads можно было указать вот так:
borg create /mnt/backups/test.ru::uploads /var/www/test.ru/html/uploads
После создания копия смотрим изменения в репозитории:
borg list /mnt/backups/test.ru/site site-2020-06-16T03:25:02 Tue, 2020-06-16 03:25:03 [f0ebe8acf744ea65b2f340657fe6c251d86620284aad008b55afc7dd2a65a7c3]
Видим что появилась резервная копия. Теперь можем посмотреть общую информацию о репозитории:
[root@server backups-sites]# borg info /mnt/backups/test.ru Repository ID: df114c32702740844c3f05b38e0192d68af0670e4a1a381214394186fd1537eb Location: /mnt/backups/test.ru Encrypted: No Cache: /root/.cache/borg/df114c32702740844c3f05b38e0192d68af0670e4a1a381214394186fd1537eb Security dir: /root/.config/borg/security/df114c32702740844c3f05b38e0192d68af0670e4a1a381214394186fd1537eb ------------------------------------------------------------------------------ Original size Compressed size Deduplicated size All archives: 644.93 kB 277.42 kB 277.42 kB Unique chunks Total chunks Chunk index: 133 133
Как мы видим, общий объём данных (Original size) — 644КБ, хранится на диске (Deduplicated size) — 277КБ.
к содержанию ↑Архивирование по расписанию
[root@server]# crontab -e 0 1 * * * borg create /mnt/backups/test.ru::site /var/www/test.ru/html
Архив будет создаваться каждый день в час ночи. Для надёжности рекомендуется настроить мониторинг.