我想存档所有早于 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