• dd


    dd 命令具有复制文件、转换文件和格式化文本的功能。 
    
    参数选项
    
    if=<输入文件>    从指定文件中读取,全称为input file
    of=<输出文件>    写入到指定文件,全称为output file
    bs=<字节数>      一次读写的字节数,全称为block size
    count=<块数>     指定复制block块的个数
    ibs=<字节数>     一次读的字节,默认是512
    obs=<字节数>     一次写的字节,默认是512
    conv=<格式>     格式转换
                    ucase把字母由小写转换为大写
                    lcase把字母由大写转换为小写
     
    
    
    范例:将/dev/sda1分区复制(备份)到文件中
    使用if从/dev/sdb1中读取数据,使用of指定输出到当前日录的dev_sdb1.img。
    [root@cs6 ~]# dd if=/dev/sdb1 of=dev_sdb1.img   
    835317+0 records in
    835317+0 records out
    427682304 bytes (428 MB) copied, 13.3079 s, 32.1 MB/s
     
    [root@cs6 ~]# ll -h dev_sdb1.img
    -rw-r--r--. 1 root root 408M May 11 15:20 dev_sdb1.img 
    
    
    
    范例:删除/dev/sdb1分区数据
    
    下面的实验很危险,请使用虚拟机操作,并提前做好快照。
    
    从/dev/zero设备读取数据,写入或覆盖/dev/sdb1的数据:
    
    [root@cs6 ~]# dd if=/dev/zero of=/dev/sdb1         #<==/dev/zero是一个特殊的设备,相当于什么都没有。
    dd: writing to `/dev/sdb1': No space left on device    #<==提示写满了。
    835318+0 records in
    835317+0 records out
    427682304 bytes (428 MB) copied, 1.77188 s, 241 MB/s
    
    说明:/dev/zero是0字符设备,可产生连续不断的特殊数据流,生成的文件为特殊格式的数据文件(二进制)。
     
    [root@cs6 ~]# df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/vg_cs6-lv_root
                           26G  1.3G   24G   5% /
    tmpfs                 931M     0  931M   0% /dev/shm
    /dev/sda1             477M   28M  424M   7% /boot
    /dev/sdb1              16Z   16Z  389M 100% /mnt/data1
    [root@cs6 ~]# ls /mnt/data1
     
    可以看到,上面的/mnt/data1分区被清空了,此时系统已经遭到破坏。
    这种情况千万不要重启系统,/mnt/data1分区受损是无法启动系统的,应该继续下面的恢复操作。
     
    
    
    范例:用上面的备份恢复删除的分区数据。
    
    [root@cs6 ~]# dd if=dev_sdb1.img of=/dev/sdb1
    835317+0 records in
    835317+0 records out
    427682304 bytes (428 MB) copied, 1.6525 s, 259 MB/s
    [root@cs6 ~]# ls /mnt/data1
    1.html  2.html  3.html  4.html  5.html  lost+found
    
    
    要特别注意if、of参数,如果位置写反了,就会出大问题。
    
     
    
    范例:生成任意大小的测试文件
    从/dev/zero读取数据写入到test,dita,生成文件test,data的大小为bs*count=1M*2=2M 
    
    [root@cs6 ~]# dd if=/dev/zero of=test.data bs=1M count=2    
    2+0 records in
    2+0 records out
    2097152 bytes (2.1 MB) copied, 0.11628 s, 18.0 MB/s
    [root@cs6 ~]# ll -h test.data
    -rw-r--r--. 1 root root 2.0M May 11 15:27 test.data
    
    
    
    范例:制作Linux系统的ISO镜像
    在Windows系统里制作光盘的ISO镜像,还需要安装其他软件。但在Linux系统中只需要dd命令就足够了。
    
    在做实验时,如果需要将CentOS的完整系统镜像上传到Linux系统中,一般使用winSCP或Xshell等工具,但这是通过网络传输的方式,上传速度受限于网络带宽。
    此时可以使用dd命令,将从光驱读取的镜像复制到系统中,相当于光驱与磁盘对拷。
    将光盘放入光驱之后,需要确保光驱可以正常读取,然后执行如下命令即可实现将光盘复制到Linux硬盘的操作:
    
    [root@cs6 ~]# ls /dev/cdrom
    /dev/cdrom
    [root@cs6 ~]# dd if=/dev/cdrom of=centos6_10.iso
    831488+0 records in
    831488+0 records out
    425721856 bytes (426 MB) copied, 49.5612 s, 8.6 MB/s
    #<==传输速度取决于光驱与磁盘之间的读写速度,可以看到这种方式的传输速度远远大于网络传输速度。
    [root@cs6 ~]# ll -h centos6_10.iso
    -rw-r--r--. 1 root root 406M May 11 15:32 centos6_10.iso
     
    
    
    范例:使用dd复制文件并进行格式转换的例子。
    
    [root@cs6 ~]# cat test.txt
    I love linux www.wenyule.top
    [root@cs6 ~]# dd if=test.txt conv=ucase of=test.test_u
    0+1 records in
    0+1 records out
    29 bytes (29 B) copied, 0.00036375 s, 79.7 kB/s
    [root@cs6 ~]# cat test.test_u
    I LOVE LINUX WWW.WENYULE.TOP 



  • 相关阅读:
    机器学习规则:ML工程最佳实践----rules_of_ml section 2【翻译】
    机器学习规则:ML工程最佳实践----rule_of_ml section 3【翻译】
    知识图谱技术分享会----有关知识图谱构建的部分关键技术简介及思考
    【e2Open】
    【2B】企业供应链管理软件
    【交互】复杂逻辑配置的一个不错的方法(神策数据)
    【视觉】交易数据展示
    【视觉】数据平台
    【设计复盘】APP设计复盘
    【设计规范】腾讯课堂
  • 原文地址:https://www.cnblogs.com/l10n/p/14203192.html
Copyright © 2020-2023  润新知