转载自:http://blog.youkuaiyun.com/dazui/article/details/43817711
项目要求
1.自动打包某一个文件目录,
2.自动将打包文件放置至一个指定目录
3.自动清除5天前的文件;
实现:
1.使用crontab 进行定时备份
2.使用tar压缩
3.使用shell算出日期 ,remove 旧文件
4. 在/usr/sbin目录中加入备份文件:baksvn
#!/bin/sh
rq=`date +%Y%m%d`
rm -f /home/svnbak/`date -d '-5 days' +%Y%m%d`.tar.gz
tar zcvf /home/svnbak/$rq.tar.gz /var/svn/document
同理可以,实现mysql的备份。
只要在压缩前加上
mysqldump -uroot -p XXXXXX > /home/XXXXXXx_bak_20150108.dat
如下所示:
#!/bin/sh
rq=`date +%Y%m%d`
mysqldump -uroot -p XXXXXX > /home/XXXXXXx_bak_$rq.dat
rm -f /home/svnbak/`date -d '-5 days' +%Y%m%d`.tar.gz
tar zcvf /home/svnbak/$rq.tar.gz /var/svn/document
-----------------------分割线--------------------------------------------
参考上面的逻辑思维,我自己也写了个用于备份文件夹
#!/bin/sh
nowDate=`date +%Y%m%d`
backupDir=/home/backup/
dbDir=/home/testsql
logFile=/home/backup/"$nowDate.log"
oldBackupFile=$backupDir`date -d '-5 days' +%Y%m%d`.tar.gz #需要删除的前五天的文件
backupFile=$backupDir$nowDate.tar.gz
echo "--------------------------------------" >> $logFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile
rm -f $oldBackupFile
echo "delete old backup file $oldBackupFile" >> $logFile
tar zcvf $backupFile $dbDir
echo "backup dir $dbDir as new file $backupFile" >> $logFile