【发布时间】:2011-05-06 19:50:40
【问题描述】:
我有一个每天创建增量备份的脚本,我需要删除所有备份,但最后 5 个。
例如,我有这个文件夹:
drwxr-xr-x 4 root root 4096 Oct 29 01:10 2010-10-29 drwxr-xr-x 4 根根 4096 Oct 30 01:10 2010-10-30 drwxr-xr-x 4 根根 4096 Oct 31 01:10 2010-10-31 drwxr-xr-x 4 root root 4096 Nov 1 01:10 2010-11-01 drwxr-xr-x 4 root root 4096 Nov 2 01:10 2010-11-02 drwxr-xr-x 4 root root 4096 Nov 3 01:10 2010-11-03 drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08我只需要维护最后 5 个目录并删除其他目录。命令执行后,我只需要这个:
drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08我不需要删除前 5 天,我需要删除除最后 5 个目录之外的所有目录 :)
现在我正在使用:
find /backup/increment -maxdepth 1 -type d -mtime +5 -exec rm -rf {} \;
但我需要改进不是基于时间:)
编辑:这是一个全天备份服务器的示例,但我需要一个脚本来删除最后 5 个之前的所有文件夹,因为我的计算机在晚上 00:10 进行备份,但并非所有晚上都完成备份,因为我的计算机整天都无法工作,我需要始终备份最后 5 次 :)
【问题讨论】:
-
如果不是“基于时间”,你对“后5个”的定义是什么?
-
@dogbane 谢谢,但@MartinStettner 解决方案似乎更优雅:)
-
@David 在主帖中添加了评论。