#!/bin/bash # Set the script to exit immediately if any command fails set -e # Function to log messages log() { echo "$(date +'%Y-%m-%d %H:%M:%S') - $1" } DATE=$(date +%Y%m%d%H%M) BACKUP_DIR=/backup BACKUP_FILE=vaultwarden-snapshot-$DATE.tar.gz CONTAINER=${VAULTWARDEN_CONTAINER_NAME} CONTAINER_DATA_DIR=/data # Create backups directory if it does not exist mkdir -p $BACKUP_DIR log "Backup directory created at $BACKUP_DIR" # Stop the container log "Stopping container $CONTAINER" if /usr/bin/docker stop $CONTAINER; then log "Container $CONTAINER stopped successfully" else log "Failed to stop container $CONTAINER" exit 1 fi # Backup the vaultwarden data directory to the backup directory log "Backing up data from $CONTAINER_DATA_DIR to $BACKUP_DIR/$BACKUP_FILE" if tar -czf "$BACKUP_DIR/$BACKUP_FILE" "$CONTAINER_DATA_DIR"; then log "Backup created successfully: $BACKUP_FILE" else log "Backup failed" exit 1 fi # Restart the container log "Restarting container $CONTAINER" if /usr/bin/docker restart $CONTAINER; then log "Container $CONTAINER restarted successfully" else log "Failed to restart container $CONTAINER" exit 1 fi # To delete files older than 30 days log "Deleting backup files older than 30 days" find $BACKUP_DIR/* -mtime +30 -exec rm {} \; -print | while read -r file; do log "Deleted old backup file: $file" done