バックアップ(以下BK)のcronをうまく作れません。
cron(またはbash?)に詳しい方教えて下さい。
BKの順序は次のとおりです。
A.BK先について
BK周期は、毎日深夜2時でお願いします。
BKデータは次のディレクトリに移動 /var/www/html/bk
B.BK元1 サイボウズoffice6(root権限)
以下のディレクトリを全てAにコピー
/var/www/html/aaa/bbb/data
/var/www/html/aaa/bbb/file
C.BK 元2 PostgreSQL(db用アカウント postgres権限 )
PostgreSQLを使用したデスクネッツdbのBK(参考URL http://goo.gl/xLf2G )
BKのコマンドは、参考URLの【バックアップの例】に書かれている内容で。
pg_dump -b -Fc -U postgres webdb > webdb.backup
BKデータは、Aにコピー
D.AのBKデータをtar.gzで1ファイルに圧縮
ファイル名は日付で自動作成(例:20120810bk)
E.最後に圧縮したBKデータを次のディレクトリに移動
/var/www/html/sendbk
以上の内容でcronを作成したいです。どうかよろしくお願いします。
#!/bin/sh TEMP_DIR=/var/www/html/bk DEST_DIR=/var/www/html/sendbk CYBOZU_DIR=/var/www/html/aaa/bbb mkdir $TEMP_DIR cp -fr $CYBOZU_DIR/data $CYBOZU_DIR/file $TEMP_DIR su - postgres -c "pg_dump -b -Fc -U postgres webdb" > $TEMP_DIR/webdb.backup cd $TEMP_DIR tar czf $DEST_DIR/`date +%Y%m%d`bk.tar.gz . rm -fr $TEMP_DIR
上記の内容を、/home/news1/backup.sh というスクリプトに書いたとして、root の crontab に以下のように登録します。
0 2 * * * /home/news1/backup.sh
一番目の人の回答とたいして変わっていませんが、以下のような点がポイントです。
条件に書かれているコマンドを コマンドラインで順番に手入力すると動作している前提で書いてます。
とりあえず、順番に並べただけですが、以下の感じで、どうでしょうか?
圧縮してから移動だと効率が悪そうなので、圧縮ファイルを保存先に直接作成しています。
ファイルの重複チェックはしていないので、すでに同名のファイルがあれば上書きされます。
#!/bin/sh rm -fr /var/www/html/bk mkdir -p /var/www/html/bk/cybozu /var/www/html/bk/PgSQL cp -fr /var/www/html/aaa/bbb/data /var/www/html/aaa/bbb/file /var/www/html/bk/cybozu/ pg_dump -b -Fc -U postgres webdb > /var/www/html/bk/PgSQL/webdb.backup tar czf /var/www/html/sendbk/`date +%Y%m%d`'bk.tar.gz' /var/www/html/bk/*
連絡が遅くなり申し訳ありません。
まだテストしておりませんが、詳細に答えていただき感謝します。
#!/bin/sh TEMP_DIR=/var/www/html/bk DEST_DIR=/var/www/html/sendbk CYBOZU_DIR=/var/www/html/aaa/bbb mkdir $TEMP_DIR cp -fr $CYBOZU_DIR/data $CYBOZU_DIR/file $TEMP_DIR su - postgres -c "pg_dump -b -Fc -U postgres webdb" > $TEMP_DIR/webdb.backup cd $TEMP_DIR tar czf $DEST_DIR/`date +%Y%m%d`bk.tar.gz . rm -fr $TEMP_DIR
上記の内容を、/home/news1/backup.sh というスクリプトに書いたとして、root の crontab に以下のように登録します。
0 2 * * * /home/news1/backup.sh
一番目の人の回答とたいして変わっていませんが、以下のような点がポイントです。
更に詳しく書いていただきありがとうございます。
bashのcron登録方法がわからなかったのですが、これで少し理解出来ました。
更に詳しく書いていただきありがとうございます。
2012/08/21 15:45:54bashのcron登録方法がわからなかったのですが、これで少し理解出来ました。