0

laste 10 データベースのバックアップを保存するための次のシェル スクリプト。しかし、小さな問題があります。スクリプトは、日付と時刻を含む各データベースの *.zip ファイルを作成し、バックアップ フォルダーに保存します。4つのデータベースがある場合、4つのzipファイルが作成されます。最後の 10 日間のバックアップでは、合計で 40 のデータベースがバックアップされています。

過去 10 日間のデータベースのバックアップを別のフォルダーに保存したいと考えています。各フォルダーにデータベースのバックアップが含まれるようにします。

以下はシェルスクリプトです。

MHOST=localhost
MUSER=backup
MPASS=SECRET
BACKUPDIR="/mnt/backup"

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DBPREFIX="$(hostname -s).mysqldb"

echo "Run MySQL backup"
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
    FILE=${BACKUPDIR}/${DBPREFIX}.${db}.`date +%Y%m%d`.gz
    $MYSQLDUMP --no-tablespaces --skip-lock-tables -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done 

find  -name "${BACKUPDIR}/${DBPREFIX}*" -type f -mtime +10 -exec rm -f '{}' ';'  

Linux環境は初めてです。

同じことで私を助けてください

宜しくお願いします Arvind Porlekar

4

1 に答える 1

2
MHOST=localhost
MUSER=backup
MPASS=SECRET
BACKUPDIR="/mnt/backup"

MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"

DBPREFIX="$(hostname -s).mysqldb"

# changed
DATE_FOR_FOLDER=`date +%y%m%d`
makedir -p "$BACKUPDIR/$DATE_FOR_FOLDER"

echo "Run MySQL backup"
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
    # changed
    FILE=${BACKUPDIR}/${DATE_FOR_FOLDER}/${DBPREFIX}.${db}.`date +%Y%m%d`.gz
    $MYSQLDUMP --no-tablespaces --skip-lock-tables -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done 

# changed
find  -name "${BACKUPDIR}" -type d -mtime +10 -exec rm -rf '{}' ';'  
于 2012-09-11T06:40:09.033 に答える