如何将两个布局相似的目录树合并成一个新的目录树?为了理解这个问题,让我们考虑以下示例。假设dir1和dir2目录下分别有a、b、c3个子目录。目录布局如下:输入目录布局在目录a、b和c中有一些文件,tree命令的输出将更好地说明:文件布局1.使用cp命令创建一个合并:现在我们将合并这两个目录到名为“merged”的新目录中。完成上述操作最简单的方法就是递归复制目录,如下图:递归复制完成新建1.1cp命令和替换引起的问题:这种方法引起的问题是创建的文件在合并目录是原始文件的副本,而不是原始文件本身。别担心,(您可能会问自己)如果不是原始文件,那有什么问题?要回答您的问题,请考虑您有许多大文件的情况。在那种情况下,复制所有文件可能需要几个小时。现在让我们回到那个问题并尝试使用mv命令而不是cp命令。尝试使用mv命令合并这些目录无法合并。所以我们不能像这样使用mv命令来合并目录。现在如何将原始文件保存到“合并”目录中?2、解决办法:cp命令有一个非常有用的选项可以帮助我们摆脱这种情况。cp命令的-l或--link选项可以创建硬链接而不是原始文件的副本。让我们试试吧。在我们尝试cp命令的硬链接选项之前,让我们检查一下原始文件的索引节点号。可以通过tree命令--inodes选项查看inode:原始文件的inode现在我们有了一个inode列表,对于cp命令我们可以通过--link选项创建硬链接:Directoriesmergeedusinghardlinks2.1验证文件:既然文件已经被复制,让我们验证inode是否与原始文件匹配:VerifyInodes2.2清除:如您所见,文件inode与原始文件相同。现在问题解决了,原来的文件已经复制到合并后的目录中了。现在我们可以删除dir1和dir2目录。去掉原目录原链接:http://linux.cn/article-3494-1.html
