53 lines
1.4 KiB
Bash
53 lines
1.4 KiB
Bash
#!/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
|