Linux-dd命令分割文件详解


Linux-dd命令详解

dd  Linux/UNIX 下的一个非常有用的命令作用是用指定大小的块拷贝一个文件并在拷贝的同时进行指定的转换
名称: dd
使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file

使用方式:
dd [option]
如果你想要在线看 manual, 可以试试:

dd help
或是

info dd
如果你想要看看这个版本如何:

dd version
输入或输出

dd if=[STDIN] of=[STDOUT]
强迫输入或输出的Size为多少Bytes

bs: dd -ibs=[BYTE] -obs=[SIZE]
强迫一次只做多少个 Bytes

cbs=BYTES
跳过一段以后才输出

seek=BLOCKS
跳过一段以后才输入

skip=BLOCKS
当然你可以拿这个来方便的拷贝光碟(注意你的光碟是标准的 iso9660格式才可以这么做唷)

dd if=/dev/cdrom of=cdrom.iso
其中 if 后面以及 of 后面的内容依你的需求调整

然后给系统这个指令就可以烧了:

cdrecord -v cdrom.iso
这篇不是在讲 cdrecord 所以上面的指令是最为简单但是不一定能符合您的硬件环境
功能把指定的输入文件拷贝到指定的输出文件中并且在拷贝过程中可以进行格式转换可以用该命令实现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填充)。
例1要把一张软盘的内容拷贝到另一张软盘上利用/tmp作为临时存储区把源盘插入驱动器中输入下述命令

$ dd if =/dev/fd0 of = /tmp/tmpfile
拷贝完成后将源盘从驱动器中取出把目标盘插入输入命令

$ dd if = /tmp/tmpfile of =/dev/fd0
软盘拷贝完成后应该将临时文件删除

$ rm /tmp/tmpfile
例2把net.i这个文件写入软盘中并设定读/写缓冲区的数目
注意软盘中的内容会被完全覆盖掉

$ dd if = net.i of = /dev/fd0 bs = 16384
例3将文件sfile拷贝到文件 dfile中

$ dd if=sfile of=dfile
例4创建一个100M的空文件

dd if=/dev/zero of=hello.txt bs=100M count=1
============================================
/dev/null外号叫无底洞你可以向它输出任何数据它通吃并且不会撑着
/dev/zero,是一个输入设备你可你用它来初始化文件
/dev/null——它是空设备也称为位桶bit bucket)。任何写入它的输出都会被抛弃如果不想让消息以标准输出显示或写入文件那么可以将消息重定向到位桶
/dev/zero——该设备无穷尽地提供0可以使用任何你需要的数目——设备提供的要多的多他可以用于向设备或文件写入字符串0
$ dd if=/dev/zero of=./test.txt bs=1k count=1
$ ls -l
total 4
-rw-rr 1 oracle dba 1024 Jul 15 16:56 test.txt
eg:

$ find / -name access_log 2>/dev/null
创建特定大小文件最简单的方法是使用 dd 命令

dd if=inputFileName of=outFileName bs=块大小 count=块个数
块大小可以使用各种计量单位
字节(1B)  c (2B)  w
(512B)  b 千字节(1024B)  k
兆字节(1024K)  M 吉字节(1024M)  G



dd if=/dev/zero of=test.file bs=1M count=10
在当前文件夹下创建一个大小为10M的文件test.file 内容全为0
/dev/zero 是一个字符设备它会不断返回0值字节/0.
如果不指定输入参数(if)默认情况会从stdin读取输入如果不指定输出参数(of)默认情况会将stdout作为输出
也可用 dd 命令来传输大量数据来测试内存的操作速度

复制代码
$ dd if=/dev/zero of=./testmm.file bs=10M count=10

记录了10+0 的读入
记录了10+0 的写出
104857600字节(105 MB)已复制0.577581 182 MB/

$ ll -h |grep testmm.file
-rw-rw-r. 1 itudu itudu 100M 7 16 18:14 testmm.file
复制代码
文件类型
一般文件 
目录文件 d
字符设备 c
块设备: b
链接文件 l
套接字文件: s
管道文件 p

目录的读执行权限意义
读权限允许读取目录中文件和子目录的列表
写权限允许在目录中新建和删除文件或子目录
执行权限可以访问目录中的文件和子目录

https://www.cnblogs.com/licheng/archive/2008/03/21/1116492.html