linux命令详解(18)复制文件 cp、dd命令详解

2014-12-13 17:17:55     17 人阅读    

拥有目标目录的写权限时,复制文件和目录只需几个非常简单的命令就能搞定。标准的cp命令会将文件复制到新的目录,文件名可变可不变,同时新文件会关联一个新的时间戳。cp的其他选项可以用来保持日期/时间戳不变、递归复制及覆盖时提示确认。下面是其中部分示例:

# cd ; touch index.html
# cp -i index.html /var/www/html/
# cp -il index.html /var/www/html
# cp -a /var/www/html /mnt/sda1/var/www/
# cp -R /var/www/html /mnt/sda1/var/www/

        假定系统安装有web服务器Apache,上面的例子展示了复制该服务器相关文件的几种做法。在第一个cp例子中,如果/var/www/html下已存在index.html文件,则在新文件覆盖该文件之前,终端会提示确认信息。在下一个例子中,index.html文件硬链接至/var/www/html目录下的同名文件。这两个硬链接指向同一个文件,从任意一个位置编辑该文件,这两个位置的文件内容都会发生改变。(/var/www/html和用户主目录位于同一文件系统时才能建立硬链接。)
        命令cp -a会将/var/www/html目录下的所有文件复制至目标目录,同时保留全部所有权和权限设定。例如,如果/mnt/sda1表示U盘,则该命令会将Web服务器的内容复制到U盘上。选项-R也能递归复制整个目录结构,不过会将所有权分配给当前用户,并添加当前日期和时间戳。
命令dd是复制数据的另一种方式。在Linux系统中,一切皆为文件,包括硬件外设。这个命令非常强大,示例如下:

$ dd if=/dev/zero of=/tmp/mynullfile count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.000308544 s, 1.7 MB/s

           /dev/zero是个能产生空字符的特殊文件。在上面的示例中,dd命令以/dev/zero为输入文件并输出到/tmp/mynullfile,其中总数(count)为块数,默认块大小为512字节。上述命令行的结果是一个填满空字符的文件,长度为512字节。使用less或vi也能查看该文件的内容,不过更好的工具是od(Octal Dump,八进制转储)命令:

$ od -vt x1 /tmp/mynullfile            查看文件的八进制转储

下面是另一个dd命令示例:

$ dd if=/dev/zero of=/tmp/mynullfile count=10 bs=2
10+0 records in
10+0 records out
20 bytes (20 B) copied, 0.000595714 s, 33.6 kB/s

          这里的块大小为2字节,复制10个块,共计20字节。下面的命令行将第一主IDE驱动器硬盘的第一个分区复制到第一从IDE驱动器硬盘的第二个分区(尝试这类命令之前做好数据备份):

# dd if=/dev/hda1 of=/dev/hdb2

         下一个例子将为第一主IDE驱动器硬盘的第一个分区制作压缩过的备份。一般来说,在实施这类备份前,要先卸载相关分区。

# umount /dev/hda1
# dd if=/dev/hda1 | gzip > bootpart.gz

下面的命令将Fedora启动映像(distboot.img)从Fedora安装DVD复制到U盘(假定U盘对应的设备节点为/dev/sda):

# dd if=diskboot.img of=/dev/sda

下面的示例会将第一主IDE硬盘的主引导扇区复制到文件mymbrfile:

# dd if=/dev/hda of=mymbrfile bs=512 count=1

将光盘插入CD/DVD驱动器,并键入如下命令(假定CD驱动器对应的设备节点为/dev/ cdrom),复制已刻录到CD或DVD的ISO映像:

# dd if=/dev/cdrom of=whatever.iso

上面运行的file命令表明,bash shell提供了多种格式的文档文件。file命令会查看文件内容,确定文件是否包含troff标记(


原文地址:http://www.itmmd.com/201412/312.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。

linux命令详解(19)修改文件属性 lsattr、chattr命令详解   上一篇
下一篇  node.js依赖的 JavaScript基础 v8中的JavaScript

精彩回复
发表评论
姓名:       

《程序员app》专门为程序员量身定做!