Linux中DD命令详解

1.dd命令简介

       功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。  

语法:dd [选项]  

if =输入文件(或设备名称)。  

of =输出文件(或设备名称)。  

ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。  

skip = blocks 跳过读入缓冲区开头的ibs*blocks块。  

obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。  

bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。  

cbs = byte 一次转换bytes字节。  

count=blocks 只拷贝输入的blocks块。  

conv = ASCII 把EBCDIC码转换为ASCIl码。  

conv = ebcdic 把ASCIl码转换为EBCDIC码。  

conv = ibm 把ASCIl码转换为alternate EBCDIC码。  

conv = block 把变动位转换成固定字符。  

conv = ublock 把固定位转换成变动位。  

conv = ucase 把字母由小写转换为大写。  

conv = lcase 把字母由大写转换为小写。  

conv = notrunc 不截短输出文件。  

conv = swab 交换每一对输入字节。  

conv = noerror 出错时不停止处理。  

conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。  

2.实例分析

2.1.数据备份与恢复

2.1.1整盘数据备份与恢复
备份:

dd if=/dev/hdx of=/dev/hdy
将本地的/dev/hdx整盘备份到/dev/hdy


dd if=/dev/hdx of=/path/to/image
将/dev/hdx全盘数据备份到指定路径的image文件


恢复:
dd if=/path/to/image of=/dev/hdx
将备份文件恢复到指定盘

2.1.3.备份MBR
备份:

dd if=/dev/hdx of=/path/to/image count=1 bs=512
备份磁盘开始的512Byte大小的MBR信息到指定文件              


恢复:

dd if=/path/to/image of=/dev/hdx
将备份的MBR信息写到磁盘开始部分               


dd实验:

[root@linux mnt]# mkdir sdb                    
[root@linux mnt]# mkdir sdc                  --这里新建两个目录来挂载磁盘
[root@linux mnt]# mount /dev/sdb /mnt/sdb/   --这里可以看见没有指定磁盘的文件格式
mount: you must specify the filesystem type
[root@linux mnt]# mkfs -t ext3 /dev/sdb      --指定文件格式
mke2fs 1.39 (29-May-2006)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2097152 blocks
104857 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@linux mnt]# mount /dev/sdb /mnt/sdb/                        --挂载
[root@linux mnt]# cd sdb/
[root@linux sdb]# cp -R /u01/app/oracle/flash_recovery_area/ .    --向sdb磁盘里面copy点东西
[root@linux mnt]# mkfs -t ext3 /dev/sdc                           --格式化磁盘sbc
mke2fs 1.39 (29-May-2006)
/dev/sdc is entire device, not just one partition!
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2097152 blocks
104857 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@linux sdb]# time dd bs=32768 if=/dev/sdb of=/dev/sdc &      --copy
[1] 2658
[root@linux sdb]# iostat -xmt 3 >> /mnt/iostat.log &              --iostat性能监控
[2] 2660
[root@linux sdb]# jobs                                            --可以查看后台任务
[1]-  Running                 time dd bs=32768 if=/dev/sdb of=/dev/sdc &
[2]+  Running                 iostat -xmt 3 >> /mnt/iostat.log &
[root@linux sdb]# 65536+0 records in
65536+0 records out
2147483648 bytes (2.1 GB) copied, 87.108 seconds, 24.7 MB/s

real    1m27.553s
user    0m0.086s
sys     0m14.660s

[1]-  Done                    time dd bs=32768 if=/dev/sdb of=/dev/sdc
[root@linux sdb]# jobs
[2]+  Running                 iostat -xmt 3 >> /mnt/iostat.log &
[root@linux sdb]# kill %2                                         --kill掉任务2
[root@linux sdb]# jobs
[2]+  已终止                  iostat -xmt 3 >> /mnt/iostat.log    
[root@linux sdb]# jobs
[root@linux mnt]# mount /dev/sdc /mnt/sdc/                        --挂载
[root@linux sdb]# df -h
文件系统              容量  已用 可用 已用% 挂载点
/dev/sda3              19G   12G  6.3G  64% /
/dev/sda1              99M   12M   83M  12% /boot
tmpfs                1014M     0 1014M   0% /dev/shm
/dev/sdb              2.0G  1.3G  583M  70% /mnt/sdb    --这里可以看见俩个磁盘的容量是一样
/dev/sdc              2.0G  1.3G  583M  70% /mnt/sdc
[root@linux mnt]# cd sdc/
[root@linux sdc]# ll                                    --果然东西也一样
总计 20
drwxr-x--- 3 root root  4096 06-22 02:33 flash_recovery_area
drwx------ 2 root root 16384 06-22 02:32 lost+found
[root@linux mnt]# cat iostat.log                       --截取片段
Linux 2.6.18-164.el5 (linux)    2012年06月22日

Time: 02时37分49秒
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.24    0.00   47.73    5.01    0.00   47.02

Device:         rrqm/s   wrqm/s   r/s   w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00  0.00  0.33     0.00     0.00     8.00     0.00    3.00   3.00   0.10
sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda3              0.00     0.00  0.00  0.33     0.00     0.00     8.00     0.00    3.00   3.00   0.10
sdb            1849.33     0.00 16920.00  0.00    73.28     0.00     8.87     0.60    0.04   0.03  49.83
sdc               0.00 18445.33  0.00 202.67     0.00    72.84   736.11     0.28    1.38   0.25   5.13


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值