dd 转换和复制文件

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

dd 命令与其它的 Linux 程序略有不同,它的命令行选项格式为“选项=值”。

命令格式:

dd [OPERAND]...

常用选项:

if=FILE
    指定输入的文件,默认为标准输入

of=FILE
    指定输出的文件,默认为标准输出

ibs=BYTES
    一次输入的字节大小,即指定一个块大小为 bytes 个字节

obs=BYTES
    一次输出的字节大小,即指定一个块大小为 bytes 个字节

bs=BYTES
    同时设置输入/输出的块大小为 bytes 个字节

count=N
    ascii:转换 ebcdic 为 ascii
    ebcdic:转换 ascii 为 ebcdic
    ibm:转换 ascii 为 alternate ebcdic
    block:把每一行转换为长度为 cbs,不足部分用空格填充
    unblock:使每一行的长度都为 cbs,不足部分用空格填充
    lcase:把大写字符转换为小写字符
    ucase:把小写字符转换为大写字符
    swab:交换输入的每对字节
    noerror:出错时不停止
    notrunc:不截短输出文件
    sync:将每个输入块填充到 ibs 个字节,不足部分用空(NUL)字符补齐

使用实例:

# 将 /dev/hda 磁盘备份到 /dev/hdb
[Linux]$  dd if=/dev/hda of=/dev/hdb

# 将/dev/hdb全盘数据备份到指定路径的image文件
[Linux]$  dd if=/dev/hdb of=/root/image

# 将 file1 中的所有英文字母转换为大写,并另存为 file2
[Linux]$  dd if=file1 of=file2 conv=ucase

# 备份 /dev/hdb 全盘数据,并利用 gzip 工具进行压缩,保存到指定路径
[Linux]$ dd if=/dev/hdb | gzip > /root/image.gz