使用 rsync 更新并从源文件夹中删除
Update using rsync and remove from the source folder
我想 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]'
对文件过滤不起作用?
你是说 --remove-sent-file
而不是 remove-source-file
吗?
--remove-sent-file
This tells rsync to remove from the sending side the files and/or symlinks that are newly created or whose content is updated on the receiving side. Directories and devices are not removed, nor are files/symlinks whose attributes are merely changed.
这意味着只有传输的文件(大小改变的文件)从源中删除。要激活包含文件,您首先需要排除所有其他但我的包含模式。您使用的 3 个参数表示“我排除了所有文件 (--include='*/' --exclude='*'
) 但匹配我的模式的文件 (--include='*.[0-9]{4}'
)
来自手册页:
--include=PATTERN
don’t exclude files matching PATTERN
--exclude=PATTERN
exclude files matching PATTERN
我想 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]'
对文件过滤不起作用?
你是说 --remove-sent-file
而不是 remove-source-file
吗?
--remove-sent-file
This tells rsync to remove from the sending side the files and/or symlinks that are newly created or whose content is updated on the receiving side. Directories and devices are not removed, nor are files/symlinks whose attributes are merely changed.
这意味着只有传输的文件(大小改变的文件)从源中删除。要激活包含文件,您首先需要排除所有其他但我的包含模式。您使用的 3 个参数表示“我排除了所有文件 (--include='*/' --exclude='*'
) 但匹配我的模式的文件 (--include='*.[0-9]{4}'
)
来自手册页:
--include=PATTERN
don’t exclude files matching PATTERN
--exclude=PATTERN
exclude files matching PATTERN