文章目录
- 1. dd命令的介绍和使用
- 1.1 dd命令的基本语法和参数
- 1.2 dd命令的使用示例
- 磁盘克隆
- 创建磁盘镜像
- 创建空文件
- 覆盖写
- 压缩备份
- 远程复制
- 1.3 dd命令使用注意事项
- 2. hexdump命令的介绍和使用
- 2.1 hexdump命令的基本语法和参数
- 2.2 hexdump命令的使用示例
- 查看文件前n个字节内容
- 查看磁盘特定扇区
- 对比文件差异
- 2.3 hexdump命令使用注意事项
- 3. 二者结合使用
1. dd命令的介绍和使用
dd是Linux系统中的一个命令行工具,主要用于块级数据的复制和转换,它以底层方式直接操作文件或设备,适合处理磁盘、分区、iSO镜像等场景。
1.1 dd命令的基本语法和参数
dd if=<输入文件> of=<输出文件> [选项]
# 常用选项
bs=<字节> : 设置每次读写块的大小,默认512B
count=<块数> : 仅复制指定数量的块
skip=<块数> : 跳过输入文件的前n个块
seek=<块数> : 跳过输出文件的前n个块
1.2 dd命令的使用示例
磁盘克隆
dd if=/dev/sda of=/dev/sdb bs=4M status=progress
将/dev/sda
克隆到/dev/sdb
(注意目标磁盘容量需要相同或者更大);status=progress
显示实时进度。
创建磁盘镜像
dd if=/dev/sda of=disk.img bs=4M status=progress
将/dev/sda
备份为镜像文件disk.img
;
恢复镜像可使用:dd if=disk.img of=/dev/sda
创建空文件
dd if=/dev/zero of=largefile.bin bs=1M count=100
生成一个100M的空文件,由零填充
覆盖写
dd if=/dev/urandom of=/dev/sda bs=4M status=progress
用随机数据覆盖磁盘。
压缩备份
# 结合gzip减少镜像体积
dd if=/dev/sda | gzip > disk.img.gz
远程复制
# 通过ssh跨网络克隆磁盘
dd if=/dev/sda | ssh user@host "dd of=/dev/sdb"
1.3 dd命令使用注意事项
- dd直接操作硬件,错误的
of=
参数可能导致数据丢失;以及执行后难以恢复数据; - bs的值越大效率越高,但需平衡内存和性能;
- 错误处理:
conv=noerror,sync
可以在读取错误时继续,并用零填充损坏快。
2. hexdump命令的介绍和使用
hexdump是Linux系统中用于查看和分析二进制文件内容的工具,它可以将文件内容以十六进制、十进制、八进制或ASCII码形式显示。
2.1 hexdump命令的基本语法和参数
hexdump [选项] <文件>
# ---------- 常用参数 ----------
# 显示模式
-C : 左侧显示十六进制字节,右侧显示对应的ASCII码
-b : 以八进制单字节显示文件内容
-c : 以ASCII字符显示文件内容,不可打印字符显示为转义字符
-d : 以十进制双字节显示内容
-o : 以八进制双字节显示内容
-x : 以十六进制双字节显示内容# 控制显示范围
-n <长度> : 仅显示文件的前N个字节
-s <偏移> : 从文件的指定偏移量开始显示,支持0x前缀表示16进制
-v : 显示所有数据
2.2 hexdump命令的使用示例
查看文件前n个字节内容
hexdump -C -n 64 /file1
查看磁盘特定扇区
hexdump -C /dev/sda -s 512 -n 512 # 查看第 2 个扇区
对比文件差异
hexdump -C file1.bin >> file1.txt
hexdump -C file2.bin >> file2.txt
diff file1.txt file2.txt
2.3 hexdump命令使用注意事项
- 大文件处理时,直接使用hexdump可能导致终端卡顿,可以结合
-n
或者使用dd命令截取片段,比如:dd if=largefile.bin bs=1M count=10 | hexdump -C
-s
偏移量以字节为单位,使用-s时要注意文件大小
3. 二者结合使用
一般情况下,可以使用dd命令操作数据,然后使用hexdump命令观察数据