是否可以使用rsync进行备份,遵循根符号链接,但保留其余的符号链接?

时间:2013-03-04 11:22:19

标签: backup rsync

我正在使用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

这可能实现吗?

1 个答案:

答案 0 :(得分:1)

您可能想尝试爆炸-a选项并省略“l”。

所以代替-av你会得到-rptgoDv。

来自文档:

-l, --links                 copy symlinks as symlinks