fc2ブログ

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

があるので、このあたりをもう少し調べてみようと思います
スポンサーサイト



テーマ : Linux
ジャンル : コンピュータ

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コマンドの定期自動実行

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サーバー
となる

テーマ : Linux
ジャンル : コンピュータ

最新記事
検索フォーム
GREEハコニワ攻略サイト
リンク
カテゴリ
月別アーカイブ
フリーエリア
最新記事
FXプライムレート
最新コメント
最新トラックバック