cron + async で定期差分バックアップ

cron + async で定期差分バックアップ
バックアップを毎日取得し
過去1週間分を保存する
対象とするのは設定ファイルとかコンテンツ
これらを毎日バックアップして
過去1週間分保存する
まずはわかりやすくコマンドで実行
rsync はフルパスにしてみた
実行環境は ubuntu12.10 64bit
sudo /usr/bin/rsync -a /var/www/ /backup/www-`/bin/date +%Y%m%d`
これを実行すると
/var/www/以下の内容が
/backup/www-バックアップした時の日付
という形式でバックアップされる
今回なら
www-20130720
となっている
このディレクトリの中には、
/var/www/ 以下のディレクトリがすべてコピーされている
`/bin/date +%Y%m%d`
は、バッククォートでかこっているため
実行結果を端末で入力したコマンドに渡すことができる
バッククォートの入力は
shift + @
これを cron で設定しておけば、バックアップが自動で行われる
大抵の例文だと深夜などにおこなうけど
ずっとパソコンをつけておけないという場合
食事やお風呂などの時間帯にしておくという方法もある
例えば、。
10 4 * * *
としてあると
毎日朝の4時10分にバックアップするけど
10 19 * * *
として夕方の7時ぐらいにバックアップという方法もある
また
バックアップを毎日取っていると、どんどんHDDやSSDの容量を使っていくので
必要に応じて削除することも必要
例えば、
sudo /usr/bin/find /backup/ -name www-* -mtime +6 -print0 | /usr/bin/xargs -0 /bin/rm -rf
とすると、古いファイルが消えるらしいけど
なぜか先ほどバックアップしたファイルも削除されていた
find コマンドのオプションに関しては
http://www.nxmnpg.com/ja/1/find
findコマンドを利用した便利なUNIXテクニック例
として
http://uguisu.skr.jp/Windows/find_xargs.html
があるので、このあたりをもう少し調べてみようと思います

cron を使った差分バックアップ

cron を使った差分バックアップ
cron と rsync を使って定期的に差分バックアップをとっていく
今回はテストなので
sudo mkdir /backup/
sudo mkdir /backup/snowpool
でバックアップディレクトリを作成して
/etc/cron.d/
の下に
vim /etc/cron.d/backup
でバックアップファイルを作成
10 2 * * * root /usr/bin/rsync -a /home/snowpool/ /backup/snowpool/
とすることで、
午前2時10分に自動的バックアップが取れるようになります
sudo chmod +x /etc/cron.d/backup
で実行権限もつけておきました

Linuxコマンドの定期自動実行

Linuxコマンドの定期自動実行
Linuxの管理ツールの多くは
自動実行機能の
cron
を使っている
cronを、使うときのポイントは
設定ファイルとディレクトリの構成
定期実行するコマンドのcronへの登録
cron によるコマンドや
スクリプトの定期自動実行の設定は
/etc
の下にある
cron,hourly
は毎時
cron.daily
は毎日
cron.weekly
は毎週
cron.montly
は毎月
というように指定したディレクトリごとにより自動実行される
管理ツールがインストール時に
スケジュール実行するスクリプトを配置するのも
これらのディレクトリになる
毎時実行するスクリプトは
/etc/crontab
の設定で起動される
/etc/cron.d は
/etc/crontab
と同じ書式の設定ファイルを配置するディレクトリ
コマンドやスクリプトの実行条件の詳細設定をするには
/etc/cron.d/
の下に設定ファイルを作成することになる
cronの書式は
分 時 日 月 曜日 実行ユーザ名 コマンド
という書式になる
分 時 日 月 曜日
については
分 0-59
時 0-23
日 1-31
月 1-12
曜日 0-7で7が日曜日
となる
数値ではなく * にするとすべてという意味になる
例えば
分のところを * にすれば、毎分という設定になる
あと、気をつけるべきなのがコマンドの設定
cron の環境変数はユーザシェルとは違うので
コマンドはフルパスで書くようにする
もし、NTPサーバーに10分おきに同期するなら
10 * * * * root /usr/sbin/ntpdate NTPサーバー
となる