dポイントプレゼントキャンペーン実施中!

以下のようなシェルをcronで実行し、バックアップを取ろうとしているのですが、データベースのバックアップだけ、うまくいく場合と抜けてしまう場合があります。
下のシェルのどの部分を変えれば、データベースのバックアップも毎回ちゃんと取ってくれるようになるのでしょうか。

------------------------------
#!/bin/bash

NAME="name"
DBNAME="dbname"
DBUSER="dbuser"
DBPASS="dbpass"
HTML="/home/test/www/"
BACKUPDIR="/bakup/"

mkdir -p $BACKUPDIR$NAME

mkdir /tmp/backup-$NAME-`date +%Y%m%d`

mysqldump --databases $DBNAME > /tmp/backup-$NAME-`date +%Y%m%d`/bk.sql -u $DBUSER --password=$DBPASS --opt

( cd /tmp/backup-$NAME-`date +%Y%m%d` ; tar cf /tmp/backup-$NAME-`date +%Y%m%d`.tar . )

( cd $HTML; tar rf /tmp/backup-$NAME-`date +%Y%m%d`.tar . )

rm -r /tmp/backup-$NAME-`date +%Y%m%d`

gzip /tmp/backup-$NAME-`date +%Y%m%d`.tar

mv -f /tmp/backup-$NAME-`date +%Y%m%d`.tar.gz $BACKUPDIR$NAME

find $BACKUPDIR$NAME -type f -mtime +7 | xargs rm -f
------------------------------

それでは、宜しくお願いします!

A 回答 (1件)

このスクリプトの実行中に日付が変わるって事はないでしょうね?



とりあえず、rm -rでファイルを消すのを止めて状況を見たらどうですか。それバックアップした際に、mysqldumpが上手く動いていないのか、あるいはそのあとのtarあたりが変なのか区別がつくと思います。あと、無駄が多いですね。
DATE=`date +%Y%m%d`
mkdir /tmp/backup-$NAME-$DATE
mysqldump --databases $DBNAME > /tmp/backup-$NAME-$DATE/bk.sql -u $DBUSER --password=$DBPASS --opt
tar cfz /tmp/backup-$NAME-$DATE.tar.gz -C /tmp/backup-$NAME-$DATE . -C $HTML .
mv -f /tmp/backup-$NAME-$DATE.tar.gz $BACKUPDIR$NAME
rm -r /tmp/backup-$NAME-$DATE
で済むんじゃないですか?

この回答への補足

ご回答ありがとうございます。
無駄まで省いて頂いて、助かります!

試してみたところ、どうやらmysqldumpでファイルが書き出される前に、圧縮されてしまうようです。

mysqldumpが終わるまで次の処理はおあずけって事はできないのでしょうか。

補足日時:2006/08/23 16:21
    • good
    • 0
この回答へのお礼

とりあえず、色々やって解決した感じです。

以下のように変える事で、今はうまくいってるようです。なぜかよくわかりませんが…

mysqldump --databases $DBNAME > /tmp/backup-$NAME-$DATE/bk.sql -u $DBUSER --password=$DBPASS --opt

/usr/local/bin/mysqldump --databases $DBNAME > /tmp/backup-$NAME-$DATE/bk.sql -u $DBUSER --password=$DBPASS --opt

本当にありがとうございました!

お礼日時:2006/08/23 21:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!