如何解决rsync --copy-unsafe-links 问题与相对符号链接不复制
当我将 rsync 与选项 --copy-unsafe-links
一起使用时,当符号链接是相对的时它不起作用。如果 simlink 是绝对链接,它会按预期工作:复制目标的内容而不是创建损坏的符号链接。
我在 /tmp
中有一个目录结构:
rsync-problem
├── dst
└── src
├── a
│ ├── a-file
│ ├── b-symlink -> ../b
│ └── c-symlink -> /tmp/rsync-problem/src/c
├── b
│ └── b-file
└── c
└── c-file
运行 rsync 后:
rsync \
--copy-unsafe-links \
--links \
--recursive \
/tmp/rsync-problem/src/a \
/tmp/rsync-problem/dst
我得到一个损坏的相对符号链接:b-symlink -> ../b
目录中的 rsync-problem/dst/a
和一个正确转换的绝对符号链接到文件 rsync-problem/dst/a/c-symlink/c-file
rsync-problem
├── dst
│ └── a
│ ├── a-file
│ ├── b-symlink -> ../b
│ └── c-symlink
│ └── c-file
└── src
├── a
│ ├── a-file
│ ├── b-symlink -> ../b
│ └── c-symlink -> /tmp/rsync-problem/src/c
├── b
│ └── b-file
└── c
└── c-file
rsync for --copy-unsafe-links 的人:
这告诉 rsync 复制指向复制树之外的符号链接的指示对象。绝对符号链接也是 像普通文件一样对待,源中的任何符号链接也是如此 使用 --relative 时的路径本身。这个选项没有额外的 如果还指定了 --copy-links 则效果。
未声明此选项在遇到相对符号链接时无效。
如果我理解正确
这告诉 rsync 复制指向的符号链接的所指对象 在复制的树之外。
/tmp/rsync-problem/src/b
在复制的 src
树之外:
/tmp/rsync-problem/src/a
我做错了什么以及如何让 rsync 将相对符号链接转换为文件,就像处理绝对符号链接一样?
复制问题的脚本:
#!/bin/sh
set -ue
mkdir -p /tmp/rsync-problem/dst
mkdir -p /tmp/rsync-problem/src/a
touch /tmp/rsync-problem/src/a/a-file
mkdir -p /tmp/rsync-problem/src/b
touch /tmp/rsync-problem/src/b/b-file
mkdir -p /tmp/rsync-problem/src/c
touch /tmp/rsync-problem/src/c/c-file
cd /tmp/rsync-problem/src/a
ln -sr ../b b-symlink
ln -s /tmp/rsync-problem/src/c /tmp/rsync-problem/src/a/c-symlink
rsync \
--copy-unsafe-links \
--links \
--recursive \
/tmp/rsync-problem/src/a \
/tmp/rsync-problem/dst
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。