/home/compose/pro-4gain-mail/docker/docker-compose.yml/mnt/compose/pro-4gain-mail/data (mailboxes, поста, certs)analogic/poste.iopro-4gain-mailАнсибл-плейбук: service-mail-backup.yml. Скрипт на firefly: /usr/local/sbin/backup-mail.sh. Systemd timer: backup-mail.timer (daily 03:00 MSK).
/mnt/compose/pro-4gain-mail/data (исключая */log, */cache).tar | ssh annalium 'cat > tmp && mv tmp final' — без локального tmp-файла (root partition firefly забит на 98%, mail data ~5GB).annalium 10.19.1.13:/mnt/storage/firefly-backup/mail/mail-YYYY-MM-DD-HHMM.tar.gz.pigz -1 если установлен (multi-thread), иначе gzip -1.Запустить вручную:
cd ansible/playbooks
ansible-playbook -c ssh service-mail-backup.yml -e sm2c_backup_mail_run_now=true
Disable timer:
ansible-playbook -c ssh service-mail-backup.yml -e sm2c_backup_mail_disable=true
Restore (cookbook):
# 1. Стек выключен / новый чистый firefly
mkdir -p /mnt/compose/pro-4gain-mail/data
cd /mnt/compose/pro-4gain-mail
tar -xzf /path/to/mail-YYYY-MM-DD-HHMM.tar.gz # развернёт data/
docker compose -f /home/compose/pro-4gain-mail/docker/docker-compose.yml up -d
Обернуть деплой в роль sm2c-cloud-mail по паттерну sm2c-cloud-netbox. См. ansible/roles.
--remove-orphans от соседнего compose-стека снёс mail-контейнер — все стеки делили project_name docker (имя родительской папки /home/compose/). Фикс: добавлено name: в каждый docker-compose.yml, --remove-orphans убран из ансибл-команд. Подробно — Конвенция compose-стеков.Changelog