Для автоматизации резервного копирования разделов в docker я рекомендую использовать Docker-volume-backup (https://github.com/offen/docker-volume-backup). Данный легкий образ (около 15 мб) позволяет подключаться к любому volume в docker и выполнять резервное копирование файлов в локальную директорию, S3-совместимое хранилище (AWS S3, MimIO, Ceph и т.д.), или отправить сохранить его на удаленное устройства через WebDAV или по SSH.
Чтобы быстро выполнить однократное резервное копирование данных из тома docker, можно выполнить:
docker run --rm \ -v data:/backup/data \ --env AWS_ACCESS_KEY_ID="" \ --env AWS_SECRET_ACCESS_KEY=" " \ --env AWS_S3_BUCKET_NAME=" " \ --entrypoint backup \ offen/docker-volume-backup:v2
Если нужно выполнить резервное копирование по SSH:
docker run --rm \ -v data:/backup/data \ --env SSH_HOST_NAME="backupsrv1.local" \ --env SSH_PORT=2222 \ --env SSH_REMOTE_PATH="/mnt/backup/" \ --env SSH_USER="user" --env SSH_PASSWORD="password" --entrypoint backup \ offen/docker-volume-backup:v2
Можно собрать отдельный образ для резервного копирования через docker-compose:
version: '3' services: backup: image: offen/docker-volume-backup:latest environment: BACKUP_CRON_EXPRESSION: "0 * * * *" BACKUP_PRUNING_PREFIX: backup- BACKUP_RETENTION_DAYS: 7 AWS_BUCKET_NAME: backup-bucket AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY: volumes: - data:/backup/my-app-backup:ro - /var/run/docker.sock:/var/run/docker.sock:ro volumes: data:
Перед бэкапом можно выполнить произвольные команды внутри контейнера. Например, сделать дамп базы данных (например, если вы выполняете бэкап Zabbix Server) или ещё что-то.