Linux命令——dd命令


命令简介

dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

参数介绍

if=文件名:输入文件名,默认为标准输入。即指定源文件。

of=文件名:输出文件名,默认为标准输出。即指定目的文件。

ibs=$bytes:一次读入$bytes个字节,即指定一个块大小为$bytes个字节。

obs=$bytes:一次输出$bytes个字节,即指定一个块大小为$bytes个字节。

bs=$bytes:同时设置读入/输出的块大小为$bytes个字节。

cbs=$bytes:一次转换$bytes个字节,即指定转换缓冲区大小。

skip=$blocks:从输入文件开头跳过$blocks个块后再开始复制。

seek=$blocks:从输出文件开头跳过$blocks个块后再开始复制。

count=$blocks:仅拷贝$blocks个块,块大小等于ibs指定的字节数。

conv=<关键字>,关键字可以有以下11种:
conversion:用指定的参数转换文件。

  1. ascii:转换ebcdic为ascii
  2. ebcdic:转换ascii为ebcdic
  3. ibm:转换ascii为alternate ebcdic
  4. block:把每一行转换为长度为cbs,不足部分用空格填充
  5. unblock:使每一行的长度都为cbs,不足部分用空格填充
  6. lcase:把大写字符转换为小写字符
  7. ucase:把小写字符转换为大写字符
  8. swap:交换输入的每对字节
  9. noerror:出错时不停止
  10. notrunc:不截短输出文件
  11. sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

--help:显示帮助信息
--version:显示版本信息

应用实例

1. 将文件中所有小写改成大写


[root@k8s-master ddtest]# dd if=duzhuotest of=duzhuotest.test conv=ucase
记录了0+1 的读入
记录了0+1 的写出
115字节(115 B)已复制,0.000237971 秒,483 kB/秒
[root@k8s-master ddtest]# cat duzhuotest.test
KAFKLNAKJ       KLJKJKFKLLKJLKGJKLGJKJKJ
KAJFAKKLKNLKKJLKJVNLKKKLJAKLLKNFDJAFL
KJKLJKLNVKLKLJFLKGKLAFKLJAFDKFJAKJKJJAFA

[root@k8s-master ddtest]#
[root@k8s-master ddtest]#
[root@k8s-master ddtest]#
[root@k8s-master ddtest]#
[root@k8s-master ddtest]# cat duzhuotest
kafklnakj       kLJkjKFKLlkjLKGJklgjkjkj
kajfakklKNLKKJLKJVNLKkkljakllknfdjafl
KJKLJKLNVKLKLJFLKGKLAFKLJAFDKFJAkjkjjafa

2. 检测坏盘

坏盘无法确定盘符的时候可以通过读写测试的方式进行磁盘确定,在对磁盘进行写入的时候服务器前面板上磁盘的对应的灯会常亮,在对应的挂载点下执行以下命令

 dd if=/dev/zero of=wtest_for_find_disk bs=64k count=100k

3. 拷贝内存内容到硬盘

[root@k8s-master dev]# dd if=/dev/mem of=/root/mem.bin bs=1024
dd: 读取"/dev/mem" 时出错: 不允许的操作
记录了1024+0 的读入
记录了1024+0 的写出
1048576字节(1.0 MB)已复制,0.00316028 秒,332 MB/秒
[root@k8s-master dev]#

4. 增加swap分区的大小

#1.创建一个大小为256M的文件
dd if=/dev/zero of=/swapfile bs=1024 count=262144

#2.把这个文件变成swap文件
mkswap /swapfile

#3.启动这个swap文件
swapon /swapfile

#4.编辑/etc/fstab文件,使其在每次开机时自动加载swap文件
/swapfile swap swap default 0 0