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个目录名并依次删除,最后就只剩下了最新的三个目录了。
然后把这样的脚本添加到你的自动备份脚本的最后面就可以了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式