仅当文件在过去 2 分钟内未发生更改时才进行 Rsync

仅当文件在过去 2 分钟内未发生更改时才进行 Rsync

我正在尝试编写一个简单的 cronjob,它查找特定目录,执行查找命令来确定文件是否在过去两分钟内被修改过,如果没有,则将该文件传输到另一个目录。

我可以毫无问题地找到需要移动的文件并 rsync 这些文件,但是当我合并两个命令时,所有文件都会被移动,即使它们在前 2 分钟内被更改过。

到目前为止,我已经尝试过:

find /tmp/dir/* -cmin +2 | rsync -ogr --chown=user:group --remove-source-files --exclude=".*" /tmp/dir/* /tmp/dir2

也:

find /tmp/dir/* -cmin +2 -exec rsync -ogr --chown=user:group --remove-source-files --exclude=".*" {} /tmp/dir2 \;

我不确定发生了什么,以及为什么返回正确文件的 find 命令不能通过管道传输或“执行”到 rsync 命令中。

提前欢呼,

我知道我很坏

答案1

当你想要使用管道时,你必须告诉 rsync 从 stdin 读取源文件:-包括-来自=-

最好不要在 find 和 rsync 中使用星号字符。

不需要 *--exclude="."。

find /tmp/dir/ -cmin +2 |
rsync -ogr --chown=user:group --remove-source-files --include-from=- /tmp/dir/ /tmp/dir2/

相关内容