PS:通过cp -r --link a/* b/* merged 硬链接不需要复制

怎样将两个布局相似的目录树合并成一个新的目录树?为理解该问题让我们思考下面的例子。

假设 dir1 和 dir2 目录中分别有3个子目录a,b和c.目录布局如下所示:

 输入目录布局

在目录a,b和c中有一些文件,tree命令的输出将能更好的说明:

 文件布局

1. 使用cp命令创建合并:

现在我们将这两个目录合并成一个名为"merged"新的目录中.完成上述操作最简单的方式就是递归复制目录,如下图所示:

 递归复制完成新的合并

1.1 cp命令和替换带来的问题:

这种方式所带来的问题是该合并目录中所创建的文件为原文件的副本,并非原文件本身.别急, (你可能正在问自己) 如果不是原文件又有什么问题? 要回答你的问题,考虑下你有很多大文件的情况.那种情形下,复制所有的文件可能花费数小时。

现在让我们回到刚那问题上,且尝试使用mv命令而不是cp命令。

 企图使用mv命令进行合并操作

这些目录不能被合并.因此我们不能像这样使用mv命令去合并目录. 现在你该怎样将原文件保存到"merged"目录中?

2. 解决方法:

cp命令有一个非常有用的选项来帮助我们摆脱这种状况. cp命令的-l 或 --link选项能够创建硬链接而非原文件副本.让我们尝试一下。

在我们尝试cp命令的硬链接选项前,让我们查看一下原文件的inode号码. 可通过tree命令--inodes选项来查看inodes:

 原文件的inodes

现在我们有了inodes的列表,对于cp命令可通过--link选项创建硬链接:

 使用硬链接合并的目录

2.1 验证文件:

现在文件已经被复制,让我们验证一下inodes是否和原文件匹配:

 Verify Inodes

2.2 清除:

正如你所看到的,这些文件的inodes和原文件的一样。现在问题已经解决,且原文件已被复制到合并目录中.现在我们能够移除dir1和dir2目录。

 移除原始目录

[转] 在 Linux 中怎样使用cp命令合并目录树的更多相关文章

  1. 【日常小记】linux中强大且常用命令:find、grep【转】

    转自:http://www.cnblogs.com/skynet/archive/2010/12/25/1916873.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍fin ...

  2. Linux 中强大且常用命令:find、grep

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下:    find命令        f ...

  3. 【转载】Linux中强大且常用命令:find、grep

    转载自:http://www.linuxeden.com/html/softuse/20130804/142065.html 在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find. ...

  4. Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块

    Linux中mod相关的命令 内核模块化   mod相关命令都是用来动态加载内核模块/驱动程序模块 http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjz ...

  5. linux中强大且常用命令:find、grep

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们. 本文结构如下: find命令 find命令的一般形 ...

  6. [转]linux中强大的screen命令

    [转]linux中强大的screen命令 http://pythonorg.diandian.com/post/2012-01-05/40027464147 今天用SCREEN用点生了,有几个功能不知 ...

  7. Linux中find、grep命令详细用法

    在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 ...

  8. Linux中rz和sz命令用法详解

    http://www.111cn.net/sys/linux/67810.htm 在linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件了,下面我们就来简单的介绍一下rz 和 sz 命 ...

  9. Linux中W与Who命令的使用

    踢掉一个从某个终端连上的用户pkill -kill  -t pts/0 ---------------------------------------------------------------- ...

随机推荐

  1. Xcode7设置生成DSYM出现大量警告

    看图,设置成这样就会出现大量的警告,解决方法如下: 将debug information format 更改为:DWARF即可

  2. js 函数参数形式

    1. var a = function(b,c){ console.log(arguments);}a("1","cc"); ->  ["1&q ...

  3. ejabberd,erlang,简单看了一下,总结一下,很肤浅

    本来也没打算深入学习erlang,就是看一下他们的大概思路erlang每个自定义函数都能注册成进程,每个节点通过erl -name 'name@ip'.进去后,可以直接做远程调用,节点之间就靠一个连接 ...

  4. laravel框架——上传、下载文件

    文件上传 在config文件夹下新建一个 项目名.php return [ 'title' => 'My Test', 'posts_per_page' => 5, 'uploads' = ...

  5. JS 输出与变量

    1. JS的输出 innerHTML: <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  6. FileUpload 改变控件显示的文字

    浏览

  7. PHP 5.6正式发布:新特性、及功能改进介绍

    经过了长时间的开发测试,新版本PHP程序(PHP5.6正式版)终于发布了.新版本中加入了一些实用的新特性,也摒弃了一些冗余的功能.同时,也对部分原有功能进行了改进.下面就一起看看PHP 5.6正式版到 ...

  8. LA 小、杂、乱题合辑

    ${\Large 1.}$(来自丘维声『高等代数』(上)$P_{189,194}$) $(1).$ 设$A,B$分别是数域${\mathbb F}$上$n\times n,m\times n$矩阵. ...

  9. cf C. Hacking Cypher

    http://codeforces.com/contest/490/problem/C 题意:把一个很大的数分成两部分,前一部分可以被a整除,后一部分可以被b整除,如果存在输出这两部分,两部分都不能含 ...

  10. 龙杰ACR122S NFC读卡器

    龙杰智能卡有限公司(ACS,龙杰智能卡控股有限公司之全资附属公司,香港联交所上市编号:8210)创立于1995年,是亚太地区第一大.全球三大智能卡读写器供应商之一.ACS被<福布斯亚洲>杂 ...