以下shell脚本用于存储最新的10个数据库。 但是问题很小。 脚本创建每个数据库的* .zip文件,包含日期和时间,并存储在备份文件夹中。 所以,如果我有4个数据库,那么它将创建4个zip文件。在最近10天的备份中,这意味着我有40个数据库备份。
我想在最近10天内使用单独的文件夹存储数据库的备份。这样每个文件夹都包含数据库的备份。
以下是shell脚本。
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
答案 0 :(得分: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 '{}' ';'