在我的本地机器上,我有一个这样的文件夹结构
/a/b
/a/c
/d/e
/d/f
Run Code Online (Sandbox Code Playgroud)
我想rsync的/a/c和/d/f到远程服务器,以便之后它具有类似的文件夹结构
/a/c
/d/f
Run Code Online (Sandbox Code Playgroud)
我必须两次调用 rsync 还是有一个选项可以自动保留文件夹结构?
好问题。您需要使用-R或--relative标志。从手册页:
-R, --relative 使用相对路径。这意味着在命令行上指定的完整路径名被发送到服务器,而不仅仅是文件名的最后部分。当您想同时发送多个不同的目录时,这尤其有用。例如,如果您使用此命令: rsync -av /foo/bar/baz.c remote:/tmp/ ... 这将在远程机器上的 /tmp/ 中创建一个名为 baz.c 的文件。如果您改为使用 rsync -avR /foo/bar/baz.c remote:/tmp/,那么将在远程机器上创建一个名为 /tmp/foo/bar/baz.c 的文件,并保留其完整路径。这些额外的路径元素称为“隐含目录”(即上例中的“foo”和“foo/bar”目录)。