那么,如果我们要得到1个月之前的日期怎么办呢?使用下面的这条命令就可以得到:
date -d last-month +%Y-%m-%d
怎么样?简单吧。实际备份的时候,因为之前脚本使用的是“m-d-Y”的形式,也就是“月-日-年”的形式,所以我稍微做了下调整。但是下面这个Shell脚本中的是按照“年-月-日”来产生文件名的。
于是,给出整个备份Shell脚本,需要的朋友只需要填写下有中文说明的部分,即可在自己的Linux服务器上使用。使用办法:复制到某个目录下,然后给予执行权限,再在cron中设置每天指定时间运行即可。(关于这部分,请自行查找相关说明,这里不再复述)
带自动清理功能的MySQL备份到FTP的Shell脚本如下:
#!/bin/bash MyUSER="db_username" # 数据库用户名,建议使用root账户或者拥有全局权限的用户名 MyPASS="db_password" # 数据库密码 MyHOST="localhost" # 数据库服务器 # Linux bin paths, change this if it can't be autodetected via which command MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" CHOWN="$(which chown)" CHMOD="$(which chmod)" GZIP="$(which gzip)" # 数据库备份的路径 DEST="/home/backup" # Main directory where backup will be stored MBD="$DEST/mysql" # Get hostname HOST="$(hostname)" # Get data in dd-mm-yyyy format NOW="$(date +%d-%m-%Y)" OLD="$(date -d last-month +%d-%m-%Y)" # File to store current backup file FILE="" # Store list of databases DBS="" # DO NOT BACKUP these databases IGGY="test" rm -rf $MBD [ ! -d $MBD ] && mkdir -p $MBD || : # Only root can access it! $CHOWN 0.0 -R $DEST $CHMOD 0600 $DEST # Get all database list first DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')" cat > ftpcc.sh <ftpcc.sh # do all inone job in pipe, # connect to mysql using mysqldump for select mysql database # and pipe it out to gz file in backup dir :) $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE fi done cat >> ftpcc.sh <
这样的Shell脚本运行后,可以得到每个MySQL库的独立备份文件,且以gz格式压缩以便节省空间。
原文地址:带自动清理功能的MySQL备份到FTP的Shell脚本, 感谢原作者分享。
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com