initial commit
This commit is contained in:
49
setup_backup.sh
Normal file
49
setup_backup.sh
Normal 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"
|
||||
Reference in New Issue
Block a user