我希望从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]'
不能用于文件过滤?
答案 0 :(得分:1)
您的意思是--remove-sent-file
而不是remove-source-file
吗?
<强>
--remove-sent-file
强>这告诉rsync从发送端删除新创建的文件和/或符号链接或在接收端更新其内容。目录和设备不会被删除,文件/符号链接的属性也不会被删除。
这意味着只从传输文件中删除了传输文件(大小已更改的文件)。要激活包含文件,首先需要排除所有其他但我的包含模式。你使用的3个参数意味着&#34;我排除了所有文件(--include='*/' --exclude='*'
)但是匹配了我的模式(--include='*.[0-9]{4}'
)
从手册页:
<强>
--include=PATTERN
强>不要排除与PATTERN匹配的文件
<强>
--exclude=PATTERN
强>排除匹配PATTERN的文件