MySQLのバックアップSHサンプル
ありがとうございます!
参考にしたサイト
http://qiita.com/crimson_21/items/6171a95f8ddb2861e2e6
1.ルートのホームにディレクトリ制作
mkdir -p /root/backup/mysql
2.shファイル制作
vi /root/mysqlBackup.sh
3.中身記述
#!/bin/sh # 他のユーザからバックアップを読み込めないようにする umask 077 # バックアップファイルを何日分残しておくか(一ヶ月分) period=31 # バックアップファイルを保存するディレクトリ dirpath='/root/backup/mysql' # ファイル名を定義(※ファイル名で日付がわかるようにしておきます) filename=`date +%y%m%d` # mysqldump実行(ファイルサイズ圧縮の為gzで圧縮しておきます。) mysqldump --opt --all-databases --events --default-character-set=binary -u root --password=パスワード | gzip > $dirpath/$filename.sql.gz # 古いバックアップファイルを削除 oldfile=`date --date "$period days ago" +%y%m%d` rm -f $dirpath/$oldfile.sql.gz
4.生のパスワードデータが入っているのでルート以外は見られないように
chmod 0700 /root/mysqlBackup.sh
5.クーロンに記述
#crontab -e
0 3 * * * root /root/mysqlBackup.sh
6.ちなみにあまり推奨されないけどSCPで一週間に一回送る
vi /root/mysqlBackup2.sh
#!/bin/sh dirpath='/root/backup/mysql' filename=`date +%y%m%d` HOST=[バックアップ先のIP] USER=root PASS=[パスワード] TARGET_FILE=$dirpath/$filename.sql.gz TARGET_DIR=/var/backup/motebeauty.jp expect -c " spawn scp ${TARGET_FILE} ${USER}@${HOST}:${TARGET_DIR} expect { \"Are you sure you want to continue connecting (yes/no)? \" { send \"yes\r\" expect \"password:\" send \"${PASS}\r\" } \"password:\" { send \"${PASS}\r\" } } interact "
7.生のパスワードデータが入っているのでルート以外は見られないように
chmod 0700 /root/mysqlBackup2.sh
8.クーロンに記述(日曜の4時20分に転送!)
#crontab -e
20 4 * * 0 root /root/mysqlBackup.sh