我如何编写脚本将每天以前的文件放入其自己的文件夹中?

我如何编写脚本将每天以前的文件放入其自己的文件夹中?

我正在运行一个不必要的复杂脚本,它看起来类似于以下命令:

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

相关内容