linux定时删除一个目录的脚本
我每天是将192.168.1.100这台机abc目录备份到另一台192.168.1.200机器下的/backup_100/abcxxxx(如20120827,201208...
我每天是将192.168.1.100这台机abc目录备份到另一台192.168.1.200机器下的/backup_100/abcxxxx(如20120827,20120828等)请问在192.168.1.200怎么在机器上写个脚本只保存3份最新的,删除其它旧的备份.谢谢!
展开
2013-08-28
展开全部
可以使用find的 ctime 选项,
ctime的意思是最后修改的时间 +3 表示三天前,也就是在 /backup_100 目录里 找到三天前的符合 abc*的文件及目录并删除。
find /backup_100 -name "abc*" -ctime +3 -exec rm {} \;
如果每天备份多次,
可以使用 NUM=`ls|wc -l`;DEL_NUM=$(($NUM-3)); for i in `ls -tr|head -$DEL_NUM`;do rm -rf $i;done
这样,首先判断当前备份了$NUM次,也就是/backup/abcxxx里有多少个文件夹,
然后NUM-3就是需要删除的文件夹的个数,
然后使用循环,
ls -tr|head -$DEL_NUM 这样通过按时间升序排列取前$DEL_NUM个目录名并依次删除,最后就只剩下了最新的三个目录了。
然后把这样的脚本添加到你的自动备份脚本的最后面就可以了
ctime的意思是最后修改的时间 +3 表示三天前,也就是在 /backup_100 目录里 找到三天前的符合 abc*的文件及目录并删除。
find /backup_100 -name "abc*" -ctime +3 -exec rm {} \;
如果每天备份多次,
可以使用 NUM=`ls|wc -l`;DEL_NUM=$(($NUM-3)); for i in `ls -tr|head -$DEL_NUM`;do rm -rf $i;done
这样,首先判断当前备份了$NUM次,也就是/backup/abcxxx里有多少个文件夹,
然后NUM-3就是需要删除的文件夹的个数,
然后使用循环,
ls -tr|head -$DEL_NUM 这样通过按时间升序排列取前$DEL_NUM个目录名并依次删除,最后就只剩下了最新的三个目录了。
然后把这样的脚本添加到你的自动备份脚本的最后面就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询