さくらvpsでcentos6.2を使用しております。

バックアップ(以下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を作成したいです。どうかよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/08/22 09:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:news1

質問者から

news12012/08/15 09:49:28

E.最後に先に圧縮したBKデータを次のディレクトリに移動

以下に訂正します

E.最後に圧縮したBKデータを次のディレクトリに移動

ベストアンサー

id:gizmo5 No.2

回答回数504ベストアンサー獲得回数141

ポイント150pt
#!/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


一番目の人の回答とたいして変わっていませんが、以下のような点がポイントです。

  • pg_dump は、権限だけではなく、環境変数なども必要そうな気がしたので、su - で起動する
  • バックアップが終わったら、/var/www/html/bk は、消しておく
  • tar ボールは、相対パスの方が、復元する時に扱いやすいので、相対パスでアーカイブする
id:news1

更に詳しく書いていただきありがとうございます。
bashのcron登録方法がわからなかったのですが、これで少し理解出来ました。

2012/08/21 15:45:54

その他の回答1件)

id:news1

質問者から

news12012/08/15 09:46:14

質問文を編集しました。詳細はこちら

id:studiocherry No.1

回答回数283ベストアンサー獲得回数100

ポイント150pt

条件に書かれているコマンドを コマンドラインで順番に手入力すると動作している前提で書いてます。

とりあえず、順番に並べただけですが、以下の感じで、どうでしょうか?
圧縮してから移動だと効率が悪そうなので、圧縮ファイルを保存先に直接作成しています。
ファイルの重複チェックはしていないので、すでに同名のファイルがあれば上書きされます。

#!/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/*
id:news1

連絡が遅くなり申し訳ありません。
まだテストしておりませんが、詳細に答えていただき感謝します。

2012/08/21 15:44:35
id:gizmo5 No.2

回答回数504ベストアンサー獲得回数141ここでベストアンサー

ポイント150pt
#!/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


一番目の人の回答とたいして変わっていませんが、以下のような点がポイントです。

  • pg_dump は、権限だけではなく、環境変数なども必要そうな気がしたので、su - で起動する
  • バックアップが終わったら、/var/www/html/bk は、消しておく
  • tar ボールは、相対パスの方が、復元する時に扱いやすいので、相対パスでアーカイブする
id:news1

更に詳しく書いていただきありがとうございます。
bashのcron登録方法がわからなかったのですが、これで少し理解出来ました。

2012/08/21 15:45:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません