【问题标题】:How to copy a folder containing absolute symlinks and preserve their relative targets如何复制包含绝对符号链接的文件夹并保留其相对目标
【发布时间】:2018-04-01 09:34:09
【问题描述】:

假设我有一个文件夹:/usr/lib/x86_64-linux-gnu/wxcrafter,其中包含一些库文件及其对应的符号链接,例如:

/usr/lib/x86_64-linux-gnu/wxcrafter/lib1.so.0 -> /usr/lib/x86_64-linux-gnu/wxcrafter/lib1.so.0.0.0

/usr/lib/x86_64-linux-gnu/wxcrafter/lib2.so.0 -> /usr/lib/x86_64-linux-gnu/wxcrafter/lib2.so.0.0.0

我想将wxcrafter 复制到新位置codeblocks保留符号链接目标的相对位置

usr/lib/x86_64-linux-gnu/codeblocks/lib1.so.0 -> /usr/lib/x86_64-linux-gnu/codeblocks/lib1.so.0.0.0

/usr/lib/x86_64-linux-gnu/codeblocks/lib2.so.0 -> /usr/lib/x86_64-linux-gnu/codeblocks/lib2.so.0.0.0

鉴于可能有许多这样的符号链接,我该如何在命令行上执行此操作?

【问题讨论】:

    标签: linux shell command-line terminal symlink


    【解决方案1】:

    使用symlinks 程序将绝对符号链接转换为相对符号链接:

    symlinks -c  wxcrafter
    

    然后复制整个目录:

    cp -a wxcrafter codeblocks
    

    如果您必须使用绝对符号链接(但为什么要这样做?),请在运行 symlinks 之前复制原始目录并在完成后恢复它。

    副本 (codeblocks) 将具有相对链接,如果您需要绝对链接,则必须编写一个小脚本(使用 ln -fs $(pwd)/$(readlink $l) $l 将任何符号链接 $l 从相对链接转换为绝对链接),如 @987654328 @ 只向一个方向转换。但是,又何必呢?

    【讨论】:

    • 感谢您的问题更正顺便说一句。在您的回复中,您应该写下 If not It。
    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 2011-02-27
    • 2012-12-24
    • 2018-03-05
    • 2014-06-16
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多