2014-08-18 04:35:50 +0000 2014-08-18 04:35:50 +0000
77
77

rsync和符号链接

我想每晚使用cron作业执行rsync将我的主目录备份到外部驱动器。我不确定rsync的符号链接标志的具体行为。

1.rsync-a标志包括-l标志(即 “将符号链接复制为符号链接")。这是否仅仅意味着它将复制链接,还是说它将按照链接复制链接到目录中的所有内容?我想避免这种情况,因为我的链接到目录中充满了媒体文件,这将涉及到复制数百GB的文件,我不需要备份。 2. 由于担心(但不确定)rsync -a会复制所有这些媒体文件,我反而添加了--no-links标志。这似乎不是我想要的行为。它只是忽略复制任何链接,这是有问题的,因为我确实有我想要复制的链接(例如来自不同项目目录的通用头文件的链接)。 3. 假设上面的#1(没有--no-links标志)是我真正想要的,它只是复制链接而不复制链接到的文件,那么当链接被备份时,它们会不会被破坏?例如我可能会将rsync源目录/home/me/projects/misc改为/media/extdrive/backup/home/me/projects/misc。在这种情况下,我假设rsync不够智能,也不会尝试修正相对目录变化的symlinks内容。这样做对吗?这是好的,如果链接在备份目录中被破坏了也没有关系,只要它们在需要恢复的时候能够被修复和工作就可以了。

答案 (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “将符号链接复制为符号链接 "的意思就是:如果rsync在源目录中看到一个符号链接,它将在目标目录中创建一个相同的符号链接。仅此而已。

2。这不是你想要的行为,因为你误解了--links的作用,因此要求了错误的行为(见答案#1)。

  1. 默认情况下,它复制的目标是_精确的。
19
19
19
2018-12-30 07:47:50 +0000

@grawity的回答很好,但这里是文档中一些相关信息的截图。比如这里的-l-L选项的具体措辞,这似乎是最相关的问题。

Source: https://linux.die.net/man/1/rsync ,或Linux上的man rsync手册页面。

还要注意的是,-a(--archive)选项里面还包含了-l选项,这一点非常棒,因为我非常喜欢用-l选项来保存我从源码上的symlinks作为目的码上的symlinks。从手册页面中可以看到

-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)

注意,我最喜欢的rsync命令和说明,包括复制,镜像,显示总进度… …

…做干运行,将stderr和stdout记录到(单独的)文件,显示统计数据,使用include path文件和exclude文件等等,请看我在第二部分的完整答案,标题为 “2. rsync命令行工具 (Linux, Windows with Cygwin)"。 https://superuser.com/a/1464264/425838