如何使用datefunction的Linux批处理specile?

首先,我不确定是属于StackOverflow还是在这里,但是这个数字更适用于服务器pipe理。

我们每天都有一个.tar备份文件作为离线备份服务器,这是我们日常处理的一部分。 这些是相对较大的文件,平均在25-30 Gig之间。 因此,我们只能保持约2周的备份。 每个星期五(是的,这是星期五),一个将ssh到远程的服务器,OpenSuse 12.1,并手动删除前一周的文件,并保持当周的数据。 例如,文件中有一个与BACKUP<YYYYMMDD><Time stamp>类似的命名scheme。

 BACKUP20121022268498.tar BACKUP20121022268498.log BACKUP20121023268498.tar BACKUP20121023268498.log BACKUP20121024268498.tar BACKUP20121024268498.log BACKUP20121025268498.tar BACKUP20121025268498.log BACKUP20121026268498.tar BACKUP20121026268498.log BACKUP20121029268498.tar BACKUP20121029268498.log BACKUP20121030268498.tar BACKUP20121030268498.log BACKUP20121031268498.tar BACKUP20121031268498.log BACKUP20121101268498.tar BACKUP20121101268498.log 

等等。

大多数情况下,我会在这个例子中使用命令rm *20121022* 。 有时候,就像在这个例子中,即使能够使用rm *201210[22-26]* 。 做一个快速的谷歌search浑水给我。 我基本上是试图设置这个,让一​​个实习生可以login,并从用户directoy运行脚本。

是否有捷径可寻? 我从哪里开始? 我很熟悉在其他语言中使用date函数,但是从哪里开始,我似乎处于一个不知所措的状态。 我不做许多Bash脚本。 谢谢。

假设文件的时间戳保持一致,你可以用find来做到这一点。

 find /path/to/backups -type f -maxdepth 1 -mtime +7 -delete 

这将列出目录中的所有文件,而不recursion上次修改时间超过7个24小时的/path/to/backups ,并删除它们。 我build议先运行没有-delete直到你知道它会为你工作。

如果您希望在日历date内运行,请使用-daystart选项。 当我有一些按小时轮播文件的时候,我觉得这是最有用的,但是我希望将我的保留时间表放在日历上。 有时候,“日”和“24小时”之间的区别实际上是重要的,使用日-daystart肯定会使保留时间表更容易解释。

您可以使用以下命令删除超过1周的文件:

 find / path -type f -name“BACKUP *”-mtime +7 -exec rm {} \;