我正在运行一个不必要的复杂脚本,它看起来类似于以下命令:
find /home/user/videos/*.avi -mtime +0 -exec mv -f {} "/home/nb/videos/1 day old" \;
然后我运行相同的命令,但这次是从“1 天前”文件夹进入“2 天前”文件夹。还有一些命令一直重复,直到 7 天前!因此,每天,上一个“X 天前”文件夹中的文件都会移动到下一个文件夹。
我基本上是想在 cron 中自动组织文件,将超过 X 天的文件移动到正确的文件夹中。这效率很低,但我确实需要这样做。有没有更简单、更有效的方法?
一旦进入 7 天前的文件夹,我会使用最后的命令从最后一个文件夹中删除超过 7 天的文件。
答案1
我使用(针对类似情况)一种非标准方式:logrotate
。
这会将所有视频备份到/home/user/videos
文件中/home/nb/videos/backup/videos.tar
(每日),然后自动将旧tar
文件移动到等...1.tar
。...2.tar
超过 7 天的备份将被删除。
我mv /home/user/videos/*.avi /var/tmp
保留了视频副本以防万一出现问题。
要激活此 logrotate 配置,请将类似以下文件放入目录/etc/logrotate.d
:
/home/nb/videos/backup/videos.tar {
rotate 7
daily
notifempty
nocreate
nocompress
missingok
postrotate
if ls /home/user/videos/*.avi > /dev/null 2>&1; then
tar cf /home/nb/videos/backup/videos.tar /home/user/videos/*.avi
mv /home/user/videos/*.avi /var/tmp
fi
endscript
}
更多信息请参阅man logrotate
。