Blame
|
1 | # Mailu |
||||||
| 2 | ||||||||
| 3 | ``` bash |
|||||||
| 4 | #!/bin/bash |
|||||||
| 5 | ||||||||
| 6 | # Configuration |
|||||||
| 7 | MAILU_DATA="/path/to/mailu_data" # Path to Mailu data |
|||||||
| 8 | BACKUP_DEST="user@synology:/path/to/synology/backups/mailu" # Destination on Synology NAS |
|||||||
| 9 | BACKUP_NAME="mailu_backup_$(date +'%Y%m%d%H%M%S').tar.gz" # Backup file name with timestamp |
|||||||
| 10 | KEEP_BACKUPS=5 # Number of backups to retain |
|||||||
| 11 | LOG_FILE="/var/log/mailu_backup.log" # Log file location |
|||||||
| 12 | ||||||||
| 13 | # Create a backup archive |
|||||||
| 14 | echo "$(date) - Starting Mailu backup..." >> $LOG_FILE |
|||||||
| 15 | tar -czf "/tmp/$BACKUP_NAME" -C "$MAILU_DATA" . >> $LOG_FILE 2>&1 |
|||||||
| 16 | ||||||||
| 17 | if [ $? -ne 0 ]; then |
|||||||
| 18 | echo "$(date) - Backup creation failed!" >> $LOG_FILE |
|||||||
| 19 | exit 1 |
|||||||
| 20 | fi |
|||||||
| 21 | ||||||||
| 22 | # Sync the backup to the NAS |
|||||||
| 23 | rsync -avz --remove-source-files "/tmp/$BACKUP_NAME" "$BACKUP_DEST" >> $LOG_FILE 2>&1 |
|||||||
| 24 | ||||||||
| 25 | if [ $? -ne 0 ]; then |
|||||||
| 26 | echo "$(date) - Rsync to NAS failed!" >> $LOG_FILE |
|||||||
| 27 | exit 1 |
|||||||
| 28 | fi |
|||||||
| 29 | ||||||||
| 30 | # Clean up older backups on the NAS |
|||||||
| 31 | echo "$(date) - Cleaning up old backups..." >> $LOG_FILE |
|||||||
| 32 | 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 |
|||||||
| 33 | ||||||||
| 34 | if [ $? -eq 0 ]; then |
|||||||
| 35 | echo "$(date) - Old backups cleaned up successfully." >> $LOG_FILE |
|||||||
| 36 | else |
|||||||
| 37 | echo "$(date) - Failed to clean up old backups." >> $LOG_FILE |
|||||||
| 38 | fi |
|||||||
| 39 | ||||||||
| 40 | echo "$(date) - Backup completed successfully." >> $LOG_FILE |
|||||||
| 41 | ``` |
|||||||