mysqldump 導出 .sqltar 壓縮打包scp 免密傳輸至備份機crontab 定時執行ssh-keygen -t rsa # 一路回車 chmod 755 ~/.ssh scp -P 1110 ~/.ssh/id_rsa.pub user@remote:/home/user/.ssh/authorized_keys
dump.sh#!/bin/bash
USER="root"
PASSWORD="*****"
DATABASE="myblogdb"
MAIL="admin@example.com"
BACKUP_DIR=/home/user/data_backup/
LOGFILE=$BACKUP_DIR/data_backup.log
DATE=$(date +%Y%m%d-%H%M)
DUMPFILE=$DATE.sql
ARCHIVE=$DATE.sql.tar.gz
OPTIONS="-u$USER -p$PASSWORD $DATABASE"
[ ! -d $BACKUP_DIR ] && mkdir -p $BACKUP_DIR
cd $BACKUP_DIR
echo "--------------------" >> $LOGFILE
echo "BACKUP DATE: $(date +'%y-%m-%d %H:%M:%S')" >> $LOGFILE
mysqldump $OPTIONS > $DUMPFILE
if [[ $? == 0 ]]; then
tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1
echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE
rm -f $DUMPFILE
scp -P 1110 $ARCHIVE user@remote:/home/user/data_backup/
else
echo "Database Backup Fail!" >> $LOGFILE
mail -s "database:$DATABASE Daily Backup Fail!" $MAIL
fi
echo "Backup Process Done"
find $BACKUP_DIR -type f -mtime +2 -name "*.tar.gz" -exec rm -f {} \;
# /etc/crontab 00 03 * * * root /data/backup/dump.sh /etc/rc.d/init.d/crond restart
每天凌晨 3 點自動備份。