Blame

6d92da theophile 2025-10-12 22:17:01 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
```