initial commit

This commit is contained in:
2026-03-23 02:53:33 +08:00
commit abd415fff0
5 changed files with 242 additions and 0 deletions

49
setup_backup.sh Normal file
View File

@@ -0,0 +1,49 @@
#!/bin/bash
# Load environment variables
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
else
echo "Error: .env file not found."
exit 1
fi
if [ "$ENABLE_BACKUPS" != "TRUE" ]; then
echo "Backups are disabled in .env. Exiting."
exit 0
fi
PROJECT_DIR=$(pwd)
BACKUP_DIR="${PROJECT_DIR}/backups"
BACKUP_SCRIPT="${PROJECT_DIR}/run_backup.sh"
# Create backups directory
mkdir -p "$BACKUP_DIR"
# Create the actual backup script that cron will run
cat <<EOF > "$BACKUP_SCRIPT"
#!/bin/bash
# Auto-generated backup script
mkdir -p "$BACKUP_DIR"
cd "$PROJECT_DIR"
# Create new backup
FILENAME="mail_backup_\$(date +%F_%H-%M-%S).tar.gz"
tar -czvf "$BACKUP_DIR/\$FILENAME" ./data/ > /dev/null 2>&1
# Delete old backups based on retention days
find "$BACKUP_DIR" -type f -name "mail_backup_*.tar.gz" -mtime +$BACKUP_RETENTION_DAYS -exec rm {} \;
EOF
chmod +x "$BACKUP_SCRIPT"
# Remove existing cron job for this backup script to avoid duplicates
crontab -l | grep -v "$BACKUP_SCRIPT" | crontab -
# Add new cron job
(crontab -l 2>/dev/null; echo "$BACKUP_CRON $BACKUP_SCRIPT >> $PROJECT_DIR/backup.log 2>&1") | crontab -
echo "Backup automation configured successfully!"
echo "Schedule: $BACKUP_CRON"
echo "Retention: $BACKUP_RETENTION_DAYS days"
echo "Backups will be saved to: $BACKUP_DIR"