Mailu

#!/bin/bash

# Configuration
MAILU_DATA="/path/to/mailu_data"  # Path to Mailu data
BACKUP_DEST="user@synology:/path/to/synology/backups/mailu"  # Destination on Synology NAS
BACKUP_NAME="mailu_backup_$(date +'%Y%m%d%H%M%S').tar.gz"  # Backup file name with timestamp
KEEP_BACKUPS=5  # Number of backups to retain
LOG_FILE="/var/log/mailu_backup.log"  # Log file location

# Create a backup archive
echo "$(date) - Starting Mailu backup..." >> $LOG_FILE
tar -czf "/tmp/$BACKUP_NAME" -C "$MAILU_DATA" . >> $LOG_FILE 2>&1

if [ $? -ne 0 ]; then
    echo "$(date) - Backup creation failed!" >> $LOG_FILE
    exit 1
fi

# Sync the backup to the NAS
rsync -avz --remove-source-files "/tmp/$BACKUP_NAME" "$BACKUP_DEST" >> $LOG_FILE 2>&1

if [ $? -ne 0 ]; then
    echo "$(date) - Rsync to NAS failed!" >> $LOG_FILE
    exit 1
fi

# Clean up older backups on the NAS
echo "$(date) - Cleaning up old backups..." >> $LOG_FILE
ssh user@synology "cd /path/to/synology/backups/mailu && ls -tp | grep -v '/$' | tail -n +$((KEEP_BACKUPS + 1)) | xargs -d 'n' -r rm --" >> $LOG_FILE 2>&1

if [ $? -eq 0 ]; then
    echo "$(date) - Old backups cleaned up successfully." >> $LOG_FILE
else
    echo "$(date) - Failed to clean up old backups." >> $LOG_FILE
fi

echo "$(date) - Backup completed successfully." >> $LOG_FILE
On this page
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9