2

我正在使用 rsync 设置备份。我想使用指向它的符号链接指定根源目录,但对于归档树的其余部分,我想保留符号链接。

此外,我想将符号链接名称保留为备份存档中的根。

这种设置的原因(可能非常聪明,也可能不是非常聪明)是源是一个版本化的应用程序,其中版本号会随着时间的推移而增加。我只想备份最新版本,我希望 rsync 从备份存档中删除旧文件。

示例来源:

source_symlink -> source-1.2.3
source-1.2.3/
  file1.txt
  dirA/
    fileA.txt
  symlink_fileA -> dirA/fileA.txt

如果我尝试用

rsync -av --delete source_symlink destination_dir

我只是在目的地中获得了符号链接的副本;像这样:

destination_dir/
  source_symlink -> source-1.2.3

即指向不存在目录的符号链接。

如果我自己解决符号链接,例如这样:

rsync -av --delete $(readlink -f source_symlink) destination_dir

我得到以下信息:

destination_dir/
  source-1.2.3/
    file1.txt
    dirA/
      fileA.txt
    symlink_fileA -> dirA/fileA.txt

在我将符号链接更改为例如下一个版本之前,这是可以的;例如source_symlink -> source-2.0.0。在这种情况下,我最终会在存档中出现重复项:

destination_dir/
  source-1.2.3/
  source-2.0.0/

我想要的是根符号链接被遵循,但其余的符号链接被保留。此外,我想在目标目录中有符号链接名称。像这样:

destination_dir/
  source/
    file1.txt
    dirA/
      fileA.txt
    symlink_fileA -> dirA/fileA.txt

这有可能实现吗?

4

1 回答 1

1

You might want to try exploding the -a option and omitting the "l".

So instead of -av you would have -rptgoDv.

From the documentation:

-l, --links                 copy symlinks as symlinks
于 2013-05-30T01:39:58.800 回答