首页 文章

我可以将多个目录符号链接到一个目录中吗?

提问于
浏览
22

我有一种感觉,我已经知道了这个问题的答案,但我想我会检查一下 .

我有许多不同的文件夹:

images_a/
images_b/
images_c/

我可以创建某种符号链接,以便这个新目录具有所有这些目录的内容吗?这是新的“ images_all ”将包含 images_aimages_bimages_c 中的所有文件?

3 回答

  • 11

    不可以 . 您必须象征性地链接所有单个文件 .

    你可以做的是创建一个定期运行的作业,基本上删除了 images_all 中的所有现有符号链接,然后从其他三个目录重新创建所有文件的链接,但它有点像kludge,像这样:

    rm -f images_all/*
    for i in images_[abc]/* ; do; ln -s $i images_all/$(basename $i) ; done
    

    请注意,在此作业运行时,其他进程可能会看到文件暂时消失 .

    您还需要注意两个或多个目录中存在单个文件名的情况 .


    经过一段时间回到这个问题,我发现你可以最小化文件不可用的时间 .

    如果将它们链接到不同的目录,则执行相对较快的 mv 操作,以最大限度地缩短时间 . 就像是:

    mkdir images_new
    for i in images_[abc]/* ; do
        ln -s $i images_new/$(basename $i)
    done
    
    # These next two commands are the minimal-time switchover.
    mv images_all images_old
    mv images_new images_all
    
    rm -rf images_old
    

    我没有测试过,所以实现它的任何人都必须确认其适用性或其他方面 .

  • 8

    您可以尝试像unionfs这样的联合文件系统!

    http://www.filesystems.org/project-unionfs.html

    http://aufs.sourceforge.net/

  • 0

    加上paxdiablo的好答案,我认为你可以使用cp -s
    (-s或--symbolic-link),它使符号链接而不是文字复制

    可能加快或简化批量添加符号链接到文件夹B和C中的文件的“合并”文件夹A.

    (我没有测试过这个)

    我无法想起我的头脑,但我确定CP有一些选项可以不覆盖现有的,因此只有新文件的符号链接将是“cp -s”ed

相关问题