我想排除远程服务器上已经存在的文件夹(即test/xyz
),并且我想rsync
从我有test1/xyz
文件夹的源服务器运行,所以我不想覆盖xyz
远程端的文件夹。
test/xyz
另外,如果源服务器上删除/添加了任何文件,这些文件将在远程服务器上删除/添加,但不包括该文件夹,我也想更新这些文件。
我已尝试使用以下命令来排除远程目录,但它会复制远程目录上的排除目录和文件。
rsync -ave ssh --exclude=remotedirectory root@IPADDRESS:remotepath --delete sourcepath
有什么想法吗?
答案1
你有2种方法。
- 只是
--exclude=dir
,无论是本地还是远程,都没有区别,因为无论如何您都不想同步它。 - 使用
--rsync-path='rsync --exclude=dir'
和远程 rsync 将通过该排除选项执行。
答案2
这应该有效:
rsync -av --delete --exclude=/xyz/ sourcepath/ root@IPADDRESS:remotepath/
当“xyz”出现在“sourcepath”的根目录中时,这将排除它,和是一个目录(末尾的“/”确保这一点)。
源目录和目标目录的尾部斜杠很重要。如果没有那个第二rsync run 将创建一个新文件夹“remotepath/sourcepath”,这可能不是您想要的。
另外,根据您的描述,您的源参数和目标参数是错误的(但困惑可能是我的)。