使用rsync更新并从源文件夹中删除

时间:2016-06-08 15:19:12

标签: bash shell synchronization rsync

我希望从rsync/local/path内容server:/remote/path

  • 文件以4位数字组成的扩展名结尾

  • 如果远程路径中不存在文件,请将文件复制到远程文件并从本地删除

  • 如果远程路径中存在文件且大小不小于本地文件,请不要将文件复制到远程文件并从本地删除

我试过

rsync -avmhP --include='*.[0-9][0-9][0-9][0-9]' --include='*/' --exclude='*' --size-only --remove-source-files /local/path server:/remote/path

但是,远程路径中存在的某些文件仍保留在本地路径中。

另一个问题是,为什么我们需要--include='*/' --exclude='*'?为什么单独--include='*.[0-9][0-9][0-9][0-9]'不能用于文件过滤?

1 个答案:

答案 0 :(得分:1)

您的意思是--remove-sent-file而不是remove-source-file吗?

根据the rsync man page

  

<强> --remove-sent-file

     

这告诉rsync从发送端删除新创建的文件和/或符号链接或在接收端更新其内容。目录和设备不会被删除,文件/符号链接的属性也不会被删除。

这意味着只从传输文件中删除了传输文件(大小已更改的文件)。要激活包含文件,首先需要排除所有其他但我的包含模式。你使用的3个参数意味着&#34;我排除了所有文件(--include='*/' --exclude='*')但是匹配了我的模式(--include='*.[0-9]{4}'

从手册页:

  

<强> --include=PATTERN

     

不要排除与PATTERN匹配的文件

     

<强> --exclude=PATTERN

     

排除匹配PATTERN的文件