cron 作业用于归档超过 xyz 天的文件

cron 作业用于归档超过 xyz 天的文件

我想存档所有早于 Xdays 的文件。这些文件位于 /home/user1/ 中,我想将存档移动到 /home/user1/folder_backup/

我正在运行 ubuntu server 12

答案1

你的朋友可能是logrotate。创建一个my_config_file包含如下指令的配置文件:

/home/user1/ {
  olddir /home/user1/folder_backup
}

然后调用logrotate my_config_file你的 crontab。

您可能应该喝杯咖啡,做一个man logrotate。它可以处理压缩、旋转和厨房水槽。它确实是这类任务的标准。

如果您确实需要精确控制天数,比如说 10,您可以选择一种简单的方法find /home/user1 -mtime +10 -exec mv {} /home/user1/folder_backup/ \;,但这并不能处理弹出的所有相关问题(文件破坏、轮换等)。

答案2

如果您要编写自己的脚本,常见的做法是获取每个文件的最后修改时间(以 unix 时间表示),将该信息放入数组(modtime - filename)中,然后开始移动您想要存档的文件。

例如,如果现在的时间是 1372174701 并且您想要存档超过一周的文件,那么您将移动所有修改时间满足以下条件的文件:

修改时间 < 1372174701 - 604800

相关内容