linux下dd命令:命令用于读取、转换并输出数据
把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法:
dd 〔选项〕
选项:
if =输入文件(或设备名称)。
of =输出文件(或设备名称)。
ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数,
skip = blocks 跳过读入缓冲区开头的ibs*blocks块,一般在裸设备有offset时使用
seek = 设定dd时从输出文件中跳过多少个dd缓冲区开始写入数据。一般在裸设备有offset时使用
obs = bytes 一次写入bytes字节,即写 入缓冲区的字节数。
bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs),一般来说,bs越大,拷贝速度越快
cbs = bytes 一次转换bytes字节。
count = blocks 只拷贝输入的blocks块,如果省略了count,表示完全拷贝输入文件到输出文件上
conv = ASCII 把EBCDIC码转换为ASCII码。
conv = ebcdic 把ASCII码转换为EBCDIC码。
conv = ibm 把ASCII码转换为alternate EBCDIC码。
conv = blick 把变动位转换成固定字符。
conv = ublock 把固定们转换成变动位
conv = ucase 把字母由小写变为大写。
conv = lcase 把字母由大写变为小写。
conv = notrunc 不截短输出文件。
conv = swab 交换每一对输入字节。
conv = noerror 出错时不停止处理。
conv = sync 把每个输入记录的大小都调到ibs的大小(用ibs填充)。
实例:
创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
使用范围:
源 目的 树勇参数
裸设备 裸设备 if of bs skip seek count
裸设备 文件系统 if of bs skip count
文件系统 裸设备 if of bs seek
文件系统 文件系统 if of bs
二、简单使用dd
测试磁盘读写
两个特殊设备:/dev/null 回收站设备,/dev/zero 产生空字符的为设备
测试磁盘写能力:
time dd if=/dev/zero of=test.txt bs=8k count=10240
因为/dev/zero是个为设备,只会输出空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。
测试磁盘读能力
time dd if=/dev/sdb1 of=/dev/null bs=8k count=10240
因为/dev/sdb1是个分区,对他读取产生IO,另外一个是为设备,对他写入不会产生IO,
同时测试读写能力
time dd if=/dev/sdb1 of=test.txt bs=8k count=1024,需要注意sdb和写入的test是否在一块磁盘上
备份磁盘数据
备份/dev/sdb1全盘数据,并利用gzip工具进行压缩,保存到指定路径:dd if=/dev/sdb | gzip >/oracle/bak/image.gz
备份到远端:在源主机上执行此命令备份/dev/sda:dd if=/dev/hda bs=1024b | netcat rac2
恢复:压缩的备份文件恢复到指定盘 :gzip -dc /oracle/bak/image.gz | dd of=/dev/sdb
将输入文件转大写到输出文件:
[root@centos7 ~]# cat 1.txt
123456;union
123456;china
中文;英文
[root@centos7 ~]# dd if=1.txt of=2.txt conv=ucase
0+1 records in
0+1 records out
40 bytes (40 B) copied, 0.000144111 s, 278 kB/s
[root@centos7 ~]# cat 2.txt
123456;UNION
123456;CHINA
中文;英文
创建交换空间:
创建文件
dd if=/dev/zero of=/u01/swapfile bs=1024 count=1100000
格式化文件
mkswap /u01/swapfile
启用
swapon /u01/swapfile
自启动:
vi /etc/rc.local
追加/sbin/swapon /u01/swapfile
查看大小:
free -m