まずはそのバックアップ用のディレクトリーを作ります
mkdir /home/example_user/MySQL_Backup mkdir /home/example_user/MySQL_Backup/script vim /home/example_user/MySQL_Backup/script/backup.sh
ここでスクリプトの本体を入力します
#!/bin/bash BK_PATH="/home/example_user/MySQL_Backup" DATE="`date +'%m%d%Y-%H%M%S'`" CONFIG_PATH="$BK_PATH/script" DB_USER="root" DB_PASS="mysql_password" DB_TOBACKUP="to_backup.txt" LOG="log.txt" LOGDATE="`date +'%m/%d/%Y-%H:%M:%S'`" DELETE="delete.txt" FTP="ftp://ftp_user:ftp_password@ftp_server.domain.tld/MySQL_Backup/" echo "---------------Backup Starts @ ""$LOGDATE""---------------" >> $CONFIG_PATH/$LOG echo -----Backup----- >> $CONFIG_PATH/$LOG cat $CONFIG_PATH/$DB_TOBACKUP | while read LINE do mysqldump --opt --force -u$DB_USER -p$DB_PASS $LINE > "$BK_PATH/""$LINE""_$DATE.sql" echo $LINE >> $CONFIG_PATH/$LOG done echo -----Delete----- >> $CONFIG_PATH/$LOG find $BK_PATH -ctime +7 -type f -name "*.sql" -print > $CONFIG_PATH/$DELETE cat $CONFIG_PATH/$DELETE | while read LINE do wput -nc -t 10 --basename=$BK_PATH/ $LINE $FTP rm $LINE echo $LINE >> $CONFIG_PATH/$LOG done echo "---------------Backup Ends @ ""$LOGDATE""---------------" >> $CONFIG_PATH/$LOG
自分でデータベースやFTPサーバーなどの情報を編集することを忘れないように
次はバックアップするつもりのデータベース名を指定します
vim /home/example_user/MySQL_Backup/script/to_backup.txt
1行に1つの名ずつを書きます。
database_1 database_2 database_3
そしてバックアップスクリプトに実行の権限を与えます
chmod +x /home/example_user/MySQL_Backup/script/backup.sh
最後には
crontab -e
でcronスケジューラを呼び出して、
0 4 * * * /home/example_user/MySQL_Backup/script/backup.sh
を追加して保存し終わってcronを再開します
sudo service cron restart
これで指定したデータベースは毎朝四時に自動にバックアップされます。更にスペースを節約するために、一週間前のバックアップファイルはFTPサーバーにアップロードされて削除されます。