我正在使用 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
这有可能实现吗?