rsync delete 仅删除较旧的源文件

rsync delete 仅删除较旧的源文件

好的,我可能会花很多时间编写一组复杂的 bash 脚本来实现这一点,但我希望这个功能已经存在于某个地方。

我的车上有一个行车记录仪设备。我会以 3 分钟为单位录制视频。当我到家时,它会自动连接到 wifi,并启动 ssh 守护进程。

我想要一个可以从 cron 调用的程序,用于 ssh 连接,并将视频 rsync 到我的 linux 机器。到目前为止,这很容易。然后,我想要做的是从行车记录仪设备中删除文件,但不是全部 - 我只想删除超过 X 天的文件。而且我希望它以某种方式与 rsync 相关联,这样它绝对只会在 rsync 知道它已复制它们时才删除它们。

如果 rsync 有像“-remove-source-files-older-than”这样的选项,它就能完美运行。

编辑:也许除了 rsync 之外还有其他工具更适合这项任务?

答案1

我有一个有效的两步方法:

首先,像往常一样使用 rsync 传输所有文件。然后,使用选项启动另一个 rsync 步骤,--remove-source-files仅对旧视频文件执行

执行此操作的方法(仅提供旧文件):

  • 使用 ZSH 代替 bash,请参阅此处的答案:rsync 目录中的 N 个最新文件。例如,选择所有超过 24 小时的文件:ls *(mh+24)
  • ls使用、等管道grep来过滤文件并将它们提供给 rsync,请参阅链接中的其他答案

相关内容