Linux DD命令的几种用途

dd命令可以说是一个比较特殊的命令,特殊之处在于本身这个命令是比较简单的,但该命令通过管道符以及特殊的Linux内文件可以实现很多实用的功能,那么,就来好好看看都有些什么用途吧!

第一:dd命令可以测试磁盘的读写大致速度,精确度虽然不高,但测出的速度有一定的指导意义

实现方法:

[root@08 ~]# dd if=/dev/zero of=/root/aa bs=10M count=100
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 8.47896 s, 124 MB/s
[root@08 ~]# 
#这是硬盘的读入速度,生成了一个名字为aa的在root下的文件,读取速度124
==================================================================
[root@08 ~]# dd if=/root/aa of=/dev/zero 
2048000+0 records in
2048000+0 records out
1048576000 bytes (1.0 GB) copied, 6.75894 s, 155 MB/s
[root@08 ~]# 
#这是硬盘的写入速度,上例生成的文件写入硬盘,写入速度155.

第二. 制作iso文件

[root@08 ~]# dd if=/root/aa of=bb.iso bs=10M
100+0 records in
100+0 records out
1048576000 bytes (1.0 GB) copied, 8.70613 s, 120 MB/s
#仍然是使用上例的root目录下的aa文件,将该文件转为名称为bb.iso的镜像文件
#主要是我的虚拟机没有挂载光盘,实际操作中将if后所跟路径换成光盘文件路径即可

第三,全盘对拷

假如,有一个硬盘挂载在系统内,该硬盘名称为sda,需要备份该硬盘整体,备份的文件存放在sdb硬盘下的/backup目录下。

sda硬盘和sdb硬盘大小规格需要至少一致,不能sda大于sdb,对拷命令为:

dd if=/dev/sda of=/backup/back_file

第四,分区的备份

[root@08 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G  9.0M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   10G  2.2G  7.9G  22% /
/dev/sdb1                8.0G  150M  7.9G   2% /mnt/sdb1
/dev/sda1                397M  127M  270M  33% /boot
/dev/mapper/centos-home  7.5G   33M  7.5G   1% /home
/dev/mapper/centos-var   2.0G  310M  1.7G  16% /var
========================================================
dd if=/dev/sdb1 of=/opt/bb
^C1686328+0 records in
1686328+0 records out
863399936 bytes (863 MB) copied, 18.3167 s, 47.1 MB/s
#可以任选一个分区备份,但需要注意,dd不管该分区内容有多少,即使是空的也是全部备份。
#备份的文件和分区大小一致

 

第五, 文本内容小写转换成大写

该功能用的比较少,基本很少用到,了解即可吧。

{ dd if=/root/user status=none conv=ucase; }>>/root/user
[root@08 ~]# cat user
zhang
li
zhao
ZHANG
LI
ZHAO

=======================================================================

在root目录下一个文件名称为user,内容为zhang,li,zhao,使用命令

{ dd if=/root/user status=none conv=ucase; }>>/root/user

还是重定向到该文件内,追加后,改变成大写。

这种方式基本没什么意义,文本小写转为大写的更改使用Python编程其实更为快速。