![rsync delete 仅删除较旧的源文件](https://linux22.com/image/1446912/rsync%20delete%20%E4%BB%85%E5%88%A0%E9%99%A4%E8%BE%83%E6%97%A7%E7%9A%84%E6%BA%90%E6%96%87%E4%BB%B6.png)
好的,我可能会花很多时间编写一组复杂的 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,请参阅链接中的其他答案