有没有办法单独 rsync 绝对符号链接?

有没有办法单独 rsync 绝对符号链接?

我想在两台机器之间同步一个大文件夹层次结构。我想复制符号链接的内容(如果它们是绝对的),例如它指向/some/folder/someFile 我想保留符号链接(如果它们是相对的),例如它指向../../somefolder 我该如何做?

编辑: 基本上我尽量避免递归。我尝试了 --copy-unsafe-links 选项,它复制绝对链接但跳过内部或相对链接,不保留链接。

答案1

我认为您应该能够使用--copy-unsafe-linksrsync 上的选项来复制文件数据,其中符号链接指向同步文件夹空间之外,但当指向的文件也在同步时仅发送符号链接。这是对--links( -l,它包含在)之外的补充-a,用于将复制的层次结构内的相对符号链接复制为符号链接。

如果这还不够精细,您可能必须创建一个您想要发送和不想发送的链接列表,并以包含/排除列表的形式find将它们作为输入传递。rsync

答案2

使用此 rsync 命令:

rsync -vrtil --copy-unsafe-links --log-file=(logfile) (source_dir) (dest_dir)

到:

  1. 保持本地系统上的符号链接相对

  2. 对于绝对链接(即以“/”开头),将符号链接指向的文件/目录(即“引用对象”)复制到目标。

#1 的示例:在此示例中,源端有 2 个文件、符号链接和链接到的文件(即“引用对象”,即 docs_home.htm):

(prompt): ls -al docs*
-rwxr-sr-x 1 (owner) (group) 8853 Jul 31  2019 docs_home.htm
lrwxrwxrwx 1 (owner) (group)   13 May 31  2019 docs_home.html -> docs_home.htm

在目的地(又称目标)端,运行上述 rsync 命令后,您将得到:

(prompt): ls -al docs*
-rwxr-sr-x 1 (owner) (group) 8853  Jul 31  2019 docs_home.htm
lrwxrwxrwx 1 (owner) (group)   13 May 31  2019 docs_home.html -> docs_home.htm

#2 的示例:在源端,有一个如下所示的链接:

lrwxrwxrwx 1 (owner) (group) 59 Sep 14  2011 Document13.pdf -> /projects/proj_name/proj_subdir/Document13.pdf

在目标(“目标”)端,运行上面的 rsync 命令后,文件本身已被复制,如运行“ls -al”的结果片段所示:

-rwxrwxr-x  1 (owner) (group) 45874 Sep 14  2011 Document13.pdf

相关内容