Shell - dd命令使用详解

1、介绍

dd命令是一款在Unix和类Unix系统中常用的命令行工具,用于转换和复制文件或块设备。

用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

该命令提供了很多的参数选项,使用户可以根据需要执行各种复制或转换操作。下面详细介绍一下dd命令的使用。

2、基本语法

dd [参数选项]

dd: device-to-device copy, 用来转换和复制文件。

dd主要用来在像磁带或者软盘驱动器之类的设置之间复制文件。

dd可以在不同操作系统间传递信息。

3、参数选项

- bs=n    (block size)每次读写n个字节,该参数将覆盖参数ibs和obs的设置。

-ibs=n    (input block size)每次读n个字节 即指定一个块大小为n个字节。

-obs=n    (output block size)每次写n个字节

- if=输入文件:指定输入文件,可以是普通文件或设备文件

                        缺省为标准输入。即指定源文件。< if=input file >

- of=输出文件:指定输出文件,可以是普通文件或设备文件

                          缺省为标准输出。即指定目的文件。< of=output file >

- count=numblocks:将dd要复制的块数限制在numblocks之内。

                                 每个块的大小是由ibs参数指定的字节数。

-cbs=n             (conversion block size)当进行复制的过程中要数据转换时,每次转换n个字节

- skip=numblocks:在开始复制前,跳过输入的numblocks个块。

                               每个块的大小由参数ibs指定的字节数。

- seek=numblocks:在开始写之前,跳过输出的numblocks个块。

                                 每个块的大小由参数obs指定的字节数。

- status=标志:显示操作进度和统计信息。

- conv=转换选项:指定要应用的转换操作,转换被复制的数据。

        ascii:转换ebcdic为ascii

        ebcdic:转换ascii为ebcdic

        ibm:转换ascii为alternate ebcdic

        block:每次输入的一行(换行符结束)被读取,输出不带换行符的文本块;每个输出快的大小由参数obs或者bs指定,如果输入的内容达不到该字节数,那么用空格字符来填充。

        unblock:使每一行的长度都为cbs,不足部分用空格填充

        lcase:把大写字符转换为小写字符

        ucase:把小写字符转换为大写字符

        swab:交换输入的每对字节

        noerror:出错时不停止

        notrunc:不截短输出文件,在写文件前,不截短文件

        sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

4、实例

4.1 复制文件

将一个文件复制到另一个位置

dd if=input.txt of=output.txt

如果输入文件很大,可以通过指定块大小和块数来加快复制速度

dd if=input.txt of=output.txt bs=4096 count=100

4.2 复制设备

将一个设备的内容复制到另一个设备

dd if=/dev/sda of=/dev/sdb

4.3 创建空文件

可以使用dd命令创建一个指定大小的空文件,例如,要创建一个大小为1GB的空文件,可以执行:

dd if=/dev/zero of=file.txt bs=1G count=1

4.4 转换文件格式

将一个windows下的文本文件进行转换,小写字母转换为大写字母(upper)

dd if=win.txt of=unix.txt conv=ucase

4.5 备份

备份磁盘开始的512个字节大小的MBR信息到指定文件:

1

dd if=/dev/hda of=/root/image count=1 bs=512

   count=1指仅拷贝一个块;bs=512指块大小为512个字节。

4.6 粉碎文件

用户可以采用类似方法在删除某个文件之前将文件中的数据进行清理,如此使得恢复被删除文件几乎是不可能的事情。处于对安全性的考虑,用户可以粉碎文件。

[kdvmt@dell:~/myfile]$ ll
总用量 12
drwxrwxr-x 2 kdvmt kdvmt 4096 12月 15 16:33 ./
drwxrwxr-x 6 kdvmt kdvmt 4096 12月 14 20:44 ../
-rwxrwxrwx 1 kdvmt kdvmt   38 12月 15 16:33 secret*
[kdvmt@dell:~/myfile]$ dd if=/dev/urandom of=secret bs=1 count=38 conv=notrunc
记录了38+0 的读入
记录了38+0 的写出
38 bytes copied, 0.000698812 s, 54.4 kB/s
[kdvmt@dell:~/myfile]$ rm secret 

先看出secret文件大小是38,然后用dd粉碎文件,块大小是1,count为secret的大小。

参数conv=notrunc确保dd恰好覆盖文件中的数据,而不覆盖磁盘其他的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值