我正在使用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
这可能实现吗?
答案 0 :(得分:1)
您可能想尝试爆炸-a选项并省略“l”。
所以代替-av你会得到-rptgoDv。
来自文档:
-l, --links copy symlinks as symlinks