mirror of
https://gitverse.ru/kpa39l/xmpp-server-prosody.git
synced 2026-09-29 09:45:02 +00:00
3.0 KiB
3.0 KiB
Backup do Яндекс.Диска (ICQ project + reusable pattern)
Установлено 2026-08-29. Компактный self-hosted проект бэкапится одним tar по образцу соседних проектов (netbox, gitea) на той же машине.
Файлы и cron
- Скрипт:
/opt/icq/backup.sh(chmod 755, закоммичен в git проекта). - Cron (root crontab, добавлен рядом с соседями, чтобы не конфликтовать по ЯД/нагрузке):
0 2 * * *netbox30 2 * * *gitea45 2 * * * /opt/icq/backup.sh >> /var/log/icq-backup.log 2>&1
- Лог:
/var/log/icq-backup.log(появляется при первом срабатывании cron).
Что бэкапится (INCLUDE в скрипте)
data config certs modules webchat docker-compose.yml .env README.md STATUS.md PRD.md MIGRATION.md WALKTHROUGH.md
data/— самое ценное: аккаунты (accounts/admin.dat), PEP/OMEMO-бандлы (pep_*,pep_*omemo*devicelist), MUC,http_upload. Хранится URL-encoded:data/nixg%2eru/....- tar по живому
data/безопасен — Prosody хранит всё файлами, останавливать контейнер не нужно. - Сертификаты (
certs/) кладутся в архив, но в git НЕ идут (.gitignore: certs/, data/, backups/, *.crt, *.key).
Логика скрипта (по образцу /opt/netbox/backup.sh)
mkdir -p BACKUP_DIR(/opt/icq/backups).mountpoint -q /mnt/yandex-disk— если не примонтирован →exit 1(ЯД монтируется @reboot через davfs).mkdir -p /mnt/yandex-disk/backup/icq-backups.tar czf icq_$(date +%Y%m%d_%H%M%S).tar.gz -C /opt/icq $INCLUDE.cpархива на ЯД.- Ротация: локально 7 дней (
find ... -mtime +7 -delete), на ЯД 30 дней (-mtime +30).
Проверка
- Размер рабочего бэкапа ~5.5MB (вся data крошечная, ~200K; основной вес — webchat/dist 26MB до gitignore).
- Состав проверить:
tar tzf backups/icq_*.tar.gz | grep -E 'data/nixg%2eru/(accounts|pep)'. - curl/TXT не нужен; сразу после создания бэкапа файл лежит и локально, и в
/mnt/yandex-disk/backup/icq-backups/.
Git-дисциплина проекта
- Remote:
git@gitverse.ru:kpa39l/icq.git(master). - Итог каждой сессии коммитить + пушить сразу (
git push origin master). Секреты не коммитить:.envотсутствует в репо (пароль в защищённом хранилище) — это правильно. - Тестовые/временные артефакты (например,
backups/icq_test_*.tar.gz) удалять после проверки — они не должны оставаться.