linux 链接问题

假设我有两个文件夹A和B
B是已存在的,且里面已经包含内容
想要把A里面的所有内容全部映射到B(假设A里面包含1.txt 2.txt等),并且以后如果A里面新增内容(如3.txt 4.txt),也可以自动映射到B里面,请问要怎么实现?
不能用ln -s A B,必须把A里面的内容放在在B里面,而不是在B里面再新增一个文件夹

阅读 2.2k
2 个回答

通过你的描述,个人感觉ln -s应该没问题。

不过我提供一个新的思路,用mount命令

mount --bind <directory A full path> <directory B full path>

这样两个目录自动同步。
不过这个不是持久的,重启后需要重新运行此命令。
想持久,需要在/etc/fstab里面加入设定。

GOOD LUCK

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

这里稍微值得讨论一下,因为有很多种情况,要区别对待:

  1. A不存在,或内容为空,则可以 ln -s B A 或者 mount --bind B A,前面一个是软连接,后面一个类似硬链接
  2. A存在,但A已有的内容不需再使用,则mount --bind B A(对于A已经建立,但以往其中的文件不需要使用都是适用的)
  3. A存在,且A中已有的文件还需要使用,即期望从处理开始,A中的所有新增文件同时体现在B中,B和A中以往的文件都还要能访问,这个是最复杂的情况,可能只有在A建立新文件时,同时做一个硬(软)链接到B啦。这个也没有批量的方法,但有一个变通的方法:
    3.1 先把所有A中的文件,在B中建立硬链接(需要同磁盘分区)。
    3.2 按前面2的方法处理。

不过2和3的变通处理方法都会带来A中超范围访问到B中原来A中不存在文件的可能,这在很注意权限防护的地方要慎重处理。

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题