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