之前我们介绍了loop的设备的基本使用,我们涉及到了一个命令,dd。
一、dd命令的简单介绍
以可选块长度复制文件,默认情况下从标准输入设备输出到标准输出设备。复制过程中,还可以对文件进行一些转换。
dd命令可以指定block的大小,按照block对某一个文件进行操作,在对磁盘等设备进行操作的时候,使用dd命令,会非常方便,特别是对块设备进行操作。
如果是对文件系统进行操作,还是使用tar backup cpio等其他命令更加方便。
二、dd命令的常用选项
格式:dd 选项1=xxx 选项2=xxx
常见选项:
if=file 从一个文件中读入内容,如果不指定if,那么默认是从stdin读入。
of=file 输出到一个文件,如果不指定of,那么默认输出到stdout。
ibs=bytes 设置读入的块的大小,input block size。这个代表dd每一次读入一个block的数据的大小。默认是512字节。
obs=bytes 设置输出的块的大小,output block size。这个达标dd每一次输出一个block的数据的大小。默认是512字节。
bs=bytes 设置读入和输出的block的大小。该选项覆盖ibs和obs的设置。
cbs=bytes 设置转换时的block的大小,配合conv=block或者unblock使用。
skip=n 一开始读取输入文件的时候,跳过前面n个block的内容。如果设置了iflag=skip_bytes,那么就会跳过前面n字节数的内容。
seek=n 在输出到一个output文件的时候,跳过前面n个block的内容,从第n+1个block开始写入内容。如果设置了oflag=seek_bytes,则跳过前面n字节数的内容。
count=n 从inout文件中复制n个block的数据,而不是一直到文件结束。如果iflag=count_bytes设置了,那么就只复制n字节数的数据。某些时候,可能不存在一个完成的block的内容,那么就只会read少于1个block的数据进来。当设置了iflag=fullblock的时候,就会一次性读入一个完整的块,如果数据不够一个block,那么就会等待知道读入一个完整的块。
status=level 控制dd输出的一些信息到标准输出上,具体可以参看coreutils文档。
conv=conversion,[conversion] 转换方式,可以有个标志设置,该方式控制了读入之后,对读入的数据进行怎样的吹,然后输出。具体参看coreutils文档。
iflag=flag,[flag] 设置读入的标志,这些标志参数控制了dd如何读入数据。
oflag=flag,[flag] 设置输出标志,这些标志参数控制了dd如何输出数据。
这两个标志参数,具体参看coreutils文档。
三、一个例子
[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s
[root@localhost text]# du -sh sun.txt
1.1M sun.txt
上面这个例子,从/dev/zero读入数据,然后输出到文件sun.txt中,其中规定了一个block的大小为1M,然后读入1个block。