写了一个自动备份站点文件的Shell脚本,可设定备份目标目录,和备份文件存放目录,以及备份文件保留的天数。将脚本放入crontab,每日定时自动运行,即可实现每日自动备份,并自动清理过期备份文件。
#!/bin/bash # 备份方法主逻辑 backup() { echo "Backup Begin! TargetDir: "${TargetDir}" BackupDir: "${BackupDir} #cd $BackupDir for f in $(ls $BackupDir) do fd=$(echo $f | cut -d . -f1) if [ "$fd" -lt "$LastDay" ] ;then echo "clear expired backup file! ===== "${f} rm -f $f else : fi done rm -rf ${BackupDir}${Today}.tar.gz tar -czPf ${BackupDir}${Today}.tar.gz ${TargetDir} echo "Backup End!" } Today=$(date +%Y%m%d) BackupDir=/home/backup/wwwroot/www.lubin19.com/ #设置备份文件存放的目录 TargetDir=/home/wwwroot/www.lubin19.com #设置备份目标目录 KeepDays=8 #设置备份文件保留的天数 LastDay=$(date -d "${KeepDays} days ago" +%Y%m%d) backup #运行备份
对于本站点,额外增加了两个步骤:1. 在备份站点文件之后,继续导出数据库文件备份; 2. 所有备份完成之后,定期重启LNMP
#!/bin/bash # Backup Main Function backup() { echo "Backup Begin! TargetDir: "${TargetDir}" BackupDir: "${BackupDir} cd ${TargetDir} for f in $(ls $BackupDir) do fd=$(echo $f | cut -d . -f1) if [ "$fd" -lt "$LastDay" ] ;then echo "clear expired backup file! ===== "${f} rm -f $f else : fi done rm -rf ${BackupDir}${Today}.tar.gz tar -czPf ${BackupDir}${Today}.tar.gz * echo "Backup End!" } Today=$(date +%Y%m%d) # =========================File Backup========================== # Backup www.lubin19.com BackupDir=/home/backup/wwwroot/www.lubin19.com/ TargetDir=/home/wwwroot/www.lubin19.com/ KeepDays=8 LastDay=$(date -d "${KeepDays} days ago" +%Y%m%d) backup # Backup www.legalseas.com BackupDir=/home/backup/wwwroot/www.legalseas.com/ TargetDir=/home/wwwroot/www.legalseas.com/ KeepDays=3 LastDay=$(date -d "${KeepDays} days ago" +%Y%m%d) backup # Backup FundGrid BackupDir=/home/backup/autobatch/FundGrid/ TargetDir=/home/autobatch/FundGrid/ KeepDays=8 LastDay=$(date -d "${KeepDays} days ago" +%Y%m%d) backup # =========================DB Backup========================== TargetDir=/home/backup/db/ BACKUP_DB_LIST=(www.lubin19.com www.legalseas.com PRD_FUNDGRID) cd ${TargetDir} rm -rf * for i in "${BACKUP_DB_LIST[@]}" do mysqldump -u数据库用户名 -h127.0.0.1 -p#数据库密码 $i | gzip > ${i}.sql.gz done BackupDir=/home/backup/db_backup/ KeepDays=8 LastDay=$(date -d "${KeepDays} days ago" +%Y%m%d) backup # =========================Reboot========================== # 每周6重启LNMP weekday=$(date +%w) if [ $weekday -eq 6 ] ;then echo $(lnmp restart) fi
最后,再创建一个每月1日重启服务器的任务 shutdown -r now
文章评论
试一下Gravatar的头像设置是否成功