Вариант 1: Локальные бэкапы с ротацией (базовый) 1. Создайте скрипт бэкапа bash sudo nano /usr/local/bin/vaultwarden-backup.sh Вставьте содержимое: bash #!/bin/bash # Vaultwarden Backup Script # Резервное копирование данных Vaultwarden set -e # Выход при ошибке # === НАСТРОЙКИ === SOURCE_DIR="/root/vaultwarden/data" # Источник данных BACKUP_DIR="/root/vaultwarden/backups" # Куда сохранять бэкапы RETENTION_DAYS=30 # Сколько дней хранить бэкапы TIMESTAMP=$(date +%Y%m%d_%H%M%S) BACKUP_FILE="vaultwarden_backup_${TIMESTAMP}.tar.gz" LOG_FILE="/var/log/vaultwarden-backup.log" # Создаем папку для бэкапов если нет mkdir -p "$BACKUP_DIR" # Логирование log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } log "=== Начало бэкапа ===" # Останавливаем контейнер для консистентности БД (опционально, но рекомендуется) log "Остановка контейнера vaultwarden..." docker stop vaultwarden 2>/dev/null || true # Создаем архив log "Создание архива: $BACKUP_FILE" tar -czf "${BACKUP_DIR}/${BACKUP_FILE}" -C "$(dirname "$SOURCE_DIR")" "$(basename "$SOURCE_DIR")" # Запускаем контейнер обратно log "Запуск контейнера vaultwarden..." docker start vaultwarden 2>/dev/null || true # Удаляем старые бэкапы log "Удаление бэкапов старше $RETENTION_DAYS дней..." find "$BACKUP_DIR" -name "vaultwarden_backup_*.tar.gz" -type f -mtime +$RETENTION_DAYS -delete -print | tee -a "$LOG_FILE" # Показываем размер и список бэкапов log "Размер нового бэкапа: $(du -h "${BACKUP_DIR}/${BACKUP_FILE}" | cut -f1)" log "Бэкапы в хранилище:" ls -lh "$BACKUP_DIR"/*.tar.gz 2>/dev/null | tee -a "$LOG_FILE" log "=== Бэкап завершен успешно ===" 2. Сделайте скрипт исполняемым bash sudo chmod +x /usr/local/bin/vaultwarden-backup.sh 3. Протестируйте вручную bash sudo /usr/local/bin/vaultwarden-backup.sh Проверьте, что файл появился: bash ls -lh /root/vaultwarden/backups/ 4. Настройте автоматизацию через Cron Откройте crontab: bash sudo crontab -e Добавьте строку для ежедневного бэкапа в 3:00 ночи: cron 0 3 * * * /usr/local/bin/vaultwarden-backup.sh 💡 Почему с остановкой контейнера? Vaultwarden использует SQLite. Хотя он устойчив к бэкапам "на лету", остановка контейнера гарантирует 100% консистентность базы данных и исключает риск повреждения архива.