DBを定期的にバックアップする必要があったので簡易的に実装。
初心者感溢れるスクリプトになったが改良は未来の自分に託すことに。超がんばれ
まず最低限必要な知識
crontab
定期的にコマンドを自動実行してくれる勤勉な子。
http://www.server-memo.net/tips/crontab.html
シェルスクリプト
コマンドを複数書き連ねてプログラムのように実行できる。
スクリプトの基本的な書き方
曜日取得
date +%w
でいけた
http://qiita.com/bsdhack/items/2884a232bf49dbd7988c
変数の使い方
ちょっと癖があります
http://shellscript.sunone.me/variable.html
mysqldump
DBをバックアップするコマンド
http://qiita.com/morizyun/items/f45dc580bac0ebba79ab
#!/bin/sh
# 曜日で連番しながらバックアップを保存する
# 一週間したら情け容赦なく上書きされていくよ
# 改行コードはLinux(LF)にしないと死に至る
# プログラミングのノリでイコールの前後にスペース入れると死に至る
# コマンドの返り血を変数に渡したいときはコマンドを``で包囲する
w=`date +%w`
f=/var/usr/hoge/backup_${w}.sql
# -pの後ろに半角スペースを入れると死に至る
mysqldump -u username -ppaswwwwwword tablename > $f
# バックアップ日のログを保存する
l=/var/usr/hoge/backup.log
d=`date`
echo backup as ${f} at ${d}>>$l
後はこの子をcrontabでぐるぐるしてあげればよさげ。
crontab -e
# DBバックアップタスク
34 3 * * * /bin/sh /var/usr/hoge/backup.sh
実行されると
/var/usr/hoge/backup_0.sql
、/var/usr/hoge/backup_1.sql
、と1週間分連番で保存されます。
翌週以降は上書きされます。
実行ログは/var/usr/hoge/backup.log
に保存されます。延々と追記するだけの簡易版なので実運用する際はファイル切り替えしないと(何かあったとき)つらい。