Автоматизация резервных копий Docker с Borg и cron: как я это делаю на своём VPS

ГлавнаяАвтоматизация резервных копий Docker с Borg и cron: как я это делаю на своём VPS

Содержание

Когда я только начала активно разворачивать контейнеры на своём VPS, мне казалось, что бэкапы — это что-то громоздкое, требующее отдельной системы, жёстких дисков и кучи времени. Но однажды ночью, когда я почти потеряла важный контейнер с клиентскими данными после неудачного обновления, я поняла: без автоматизации бэкапов жить просто нельзя. Особенно когда ты работаешь с Docker и у тебя крутятся приложения, важные для бизнеса или личных проектов.

Так начался мой путь с BorgBackup и старым добрым cron. Сейчас расскажу, как я это всё настроила — по-человечески и без заумных скриптов.


Почему не стоит откладывать бэкапы Docker-контейнеров

Если ты когда-либо теряла файлы или сбивала

docker-compose
конфиг, ты понимаешь, как быстро может пойти всё не по плану. Резервные копии нужны не только сайтам, но и контейнерам с БД, пользовательскими настройками, даже обычным
volume
с файлами.

Вот примеры, что стоит бэкапить в Docker-проектах:

  • Файлы сайта (html, css, js, uploads)
  • Базы данных (через docker exec mysqldump, например)
  • Файлы конфигурации (.env, docker-compose.yml, nginx.conf)
  • Сертификаты и ключи (letsencrypt, ssh)
  • Docker volumes (их можно тарить напрямую, если монтируются)

Что такое Borg и почему я выбрала именно его

BorgBackup (или просто Borg) — это утилита для дедупликации данных и безопасного создания архивов. Он не просто делает копии файлов — он:

  • сохраняет только изменения (экономит место),
  • шифрует данные (AES),
  • сжимает архивы,
  • легко интегрируется с cron и shell.

Я сравнивала его с rsync и duplicity, но Borg оказался проще в настройке и мощнее по возможностям. И ещё — он нативно работает в CLI, что мне особенно близко ❤️


Установка Borg на VPS

sudo apt update sudo apt install borgbackup -y

На локальной машине (или другом VPS — если у вас есть репозиторий для бэкапов) — делаем то же самое.


Создание репозитория для бэкапов

Допустим, у меня есть второй VPS с хранилищем (пусть будет

backup.mydomain.ru
). Я использую SSH и ключи для соединения.

borg init --encryption=repokey borg@backup.mydomain.ru:/home/borg/docker_backups

После этого будет создан шифрованный репозиторий. Пароль стоит сохранить в

~/.borg-passphrase
(если доверяете себе автоматизацию).


Что именно бэкапить из Docker

Один из примеров — бэкап volume с данными сайта и конфигурацией:

docker run --rm \ -v my_volume:/volume \ -v $(pwd)/backup:/backup \ alpine \ tar czf /backup/site_backup.tar.gz /volume

Можно и проще: если монтировали volume в файловую систему, бэкапить его как обычную папку.


Автоматизация через cron

Вот пример скрипта

backup_docker.sh
, который я кладу в
/usr/local/bin/
:

#!/bin/bash export BORG_PASSPHRASE='мой_пароль' export BORG_REPO=borg@backup.mydomain.ru:/home/borg/docker_backups backup_name="docker-$(date +%Y-%m-%d_%H-%M)" backup_path="/srv/docker_data" borg create --stats --compression lz4 ::${backup_name} ${backup_path} borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=3 unset BORG_PASSPHRASE

И добавляю в cron:

crontab -e
0 3 * * * /usr/local/bin/backup_docker.sh >> /var/log/backup_docker.log 2>&1

Теперь каждую ночь в 3:00 мои данные в надёжных руках 😊


Восстановление при необходимости

Borg умеет легко восстанавливать данные:

borg list $BORG_REPO borg extract $BORG_REPO::docker-2025-08-14_03-00

Если архив зашифрован — он спросит пароль. После этого все файлы будут извлечены в текущую директорию.


Несколько практических советов

  • Раз в месяц проверяйте бэкапы вручную — восстанавливайте хотя бы один архив.
  • Используйте мониторинг на лог-файлы — я иногда отправляю алерты в Telegram при ошибках бэкапа.
  • Не храните бэкапы на том же VPS. Хоть это и дешевле, но риск выше.

Заключение: автоматизация бэкапов — это не “опционально”

С тех пор как я автоматизировала бэкапы через Borg и cron, я сплю спокойно. Серьёзно. Даже если я обновляю

docker-compose
, пересобираю образ или случайно удаляю volume — всё можно вернуть.

Если вы, как и я, работаете с Docker на VPS — не откладывайте. Настроить это можно за вечер, а спасти может целый проект.


Вот наглядная таблица сравнения Borg, Rsync, Duplicity и Restic — с точки зрения резервного копирования Docker-контейнеров на VPS:

ХарактеристикаBorgBackupRsyncDuplicityRestic
🚀 СкоростьВысокая (сжатие + дедупликация)СредняяСредняяВысокая
💾 Дедупликация данных✅ Да❌ Нет❌ Нет✅ Да
🔐 Шифрование✅ AES❌ (только через SSH)✅ GnuPG✅ AES
📦 Сжатие✅ Да (lz4, zlib и др.)❌ Нет✅ Да✅ Да
🧠 Простота настройки⭐⭐⭐⭐⭐ (самый простой)⭐⭐⭐⭐
📁 Инкрементальные бэкапы✅ Да✅ Да✅ Да✅ Да
🧪 Проверка целостности✅ Встроена❌ Только вручную✅ Через GPG✅ Встроена
🛠 Поддержка SSH✅ Да✅ Да✅ Да✅ Да
⏱ Автоматизация (cron)✅ Легко✅ Легко✅ Легко✅ Легко
☁️ Поддержка облаковЧерез
sshfs
или
rclone
Через
ssh
✅ Amazon S3, GDrive и др.✅ Amazon S3, GDrive и др.
🐋 Подходит для Docker✅ Идеально✅ Частично (без архивации)✅ Да✅ Да
🔧 Активность проекта🟢 Активно развивается🟢 Стабильный🟡 Меньше обновлений🟢 Активно развивается

Мой личный выбор

Я пробовала все четыре — и осталась с Borg, потому что он:

  • не требует костылей,
  • шустро архивирует docker volume’ы,
  • не “жрёт” лишнее место,
  • и просто работает.

Для кого-то rsync подойдёт лучше — если нужен просто копипаст в папку. Но если вам важна надежность, дедупликация и шифрование — Borg — лучший друг разработчицы на VPS 🙂

Забирай бонус

Миграция бесплатна, а за оплату года — ещё месяц сверху.

Месяц в подарок
COPIED
NEWCOMM COPIED