Linux dd命令如何实现数据备份、转换及磁盘操作的全方位应用?

摘要:1. 概述 Data Duplicator是Linux中一个​​底层数据操作工具​​,用于读取、转换并输出数据。 dd 可从文件、设备或标准输入中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出,适用于备份、磁盘克隆、启动盘
1. 概述 Data Duplicator是Linux中一个​​底层数据操作工具​​,用于读取、转换并输出数据。 dd 可从文件、设备或标准输入中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出,适用于备份、磁盘克隆、启动盘制作等高危操作。其强大性伴随着风险,使用时需格外谨慎。 2. 命令说明 基本语法: dd if=<输入文件> of=<输出文件> [选项] if=文件名:输入文件名,默认为标准输入。即指定源文件。 of=文件名:输出文件名,默认为标准输出。即指定目的文件。 选项说明: count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。 ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。 obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。 bs=bytes:同时设置读入/输出的块大小为bytes个字节。 cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。 skip=blocks:从输入文件开头跳过blocks个块后再开始复制。 seek=blocks:从输出文件开头跳过blocks个块后再开始复制。 conv=<关键字>,关键字可以有以下11种: conversion:用指定的参数转换文件。 ascii:转换ebcdic为ascii ebcdic:转换ascii为ebcdic ibm:转换ascii为alternate ebcdic block:把每一行转换为长度为cbs,不足部分用空格填充 unblock:使每一行的长度都为cbs,不足部分用空格填充 lcase:把大写字符转换为小写字符 ucase:把小写字符转换为大写字符 swap:交换输入的每对字节 noerror:出错时不停止 notrunc:不截短输出文件 sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。 --help:显示帮助信息 --version:显示版本信息 3. 示例 3.1​​制作U盘启动盘 dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress 3.2​​磁盘克隆与备份 ​​全盘备份​​: dd if=/dev/sda of=/backup.img bs=4M conv=noerror,sync 恢复备份​​: dd if=/backup.img of=/dev/sda bs=4M ​​3.3 文件格式转换​​ 大小写转换​​: dd if=source.txt of=upper.txt conv=ucase # 转大写 由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备:   dd conv=ucase #if默认为标准输入、of默认为标准输出 输入以上命令后按回车键,输入字符串,再按回车键,按组合键Ctrl+D 退出,出现以下结果: dd conv=ucase Hello Linux! #输入字符串后按回车键 HELLO LINUX! #按组合键Ctrl+D退出,转换成大写结果 记录了0+1 的读入 记录了0+1 的写出 13字节(13 B)已复制,12.1558 秒,0.0 KB/s ​​3.4 生成测试文件   生成大文件: dd if=/dev/zero of=test bs=1G count=10 #快速生成10G的大文件 生成一个 1GB 的随机数据文件: dd if=/dev/urandom of=randfile bs=1M count=1024 status=progress 随机生成1000个1K的小文件: seq 1000 | xargs -i dd if=/dev/zero of={}.dat bs=1024 count=1 #随机生成指定大小 3.5磁盘性能测试​​ 测试磁盘写能力: time dd if=/dev/zero of=testw.dbf bs=4k count=100000 of文件只用于写,所以这个命令相当于测试磁盘的写能力。 测试磁盘读能力: time dd if=/dev/sdb of=/dev/null bs=4k 因为/dev/sdb是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以这个命令的IO只发生在/dev/sdb上,也相当于测试磁盘的读能力。
阅读全文