插件窝 干货文章 linux里的dd怎么使用

linux里的dd怎么使用

磁盘 文件 dev bash 116    来源:    2025-04-06

dd 是 Linux 中一个强大的磁盘和文件操作工具,常用于数据复制、转换和备份。它以块为单位处理数据,适合低级别操作。以下是 dd 的详细使用指南:


基本语法

dd if=<输入文件> of=<输出文件> [选项]

常用场景与示例

1. 备份与恢复磁盘

  • 备份整个磁盘到镜像文件

    dd if=/dev/sdX of=/path/to/backup.img bs=4M status=progress
    
    • if=/dev/sdX:源磁盘(如 /dev/sda)。
    • bs=4M:设置块大小为 4MB(提高速度)。
    • status=progress:显示进度(仅限较新版本)。
  • 恢复镜像到磁盘

    dd if=/path/to/backup.img of=/dev/sdX bs=4M status=progress
    

2. 克隆磁盘

dd if=/dev/sdX of=/dev/sdY bs=4M status=progress
  • /dev/sdX 完整克隆到 /dev/sdY(目标磁盘需相同或更大容量)。

3. 创建空文件(预分配空间)

dd if=/dev/zero of=/path/to/file bs=1M count=100
  • 生成一个 100MB 的空文件。

4. 测试磁盘读写速度

dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct
  • 测试写入速度(oflag=direct 绕过缓存,结果更真实)。

5. 擦除磁盘数据

dd if=/dev/zero of=/dev/sdX bs=4M status=progress
  • 用零填充整个磁盘(安全删除数据)。

6. 转换数据格式

dd if=input.txt of=output.txt conv=ucase
  • 将文件内容转为大写(conv=ucase)。

7. 跳过或截取部分数据

dd if=/dev/sdX of=output.img skip=1000 bs=1M count=500
  • 跳过前 1000MB,仅复制后续 500MB 数据。

关键选项

选项 作用
bs=BYTES 设置读写块大小(如 4M)。
count=N 复制 N 个块后停止。
skip=N 跳过输入文件的前 N 个块。
seek=N 跳过输出文件的前 N 个块。
conv=FLAGS 转换选项(如 notrunc 不截断输出文件)。
oflag=FLAGS 输出模式(如 direct 直接 I/O)。

注意事项

  1. 谨慎操作目标设备
    dd 直接操作块设备,错误的 of= 参数可能导致数据丢失(如误选系统盘)。
  2. 验证数据完整性
    克隆或备份后,可用 cmpsha256sum 校验: bash sha256sum /dev/sdX backup.img
  3. 替代工具
    • 更友好的磁盘克隆工具:rsync, cat, pv
    • 安全删除:shredscrub

高级用法

  • 备份并压缩
    bash dd if=/dev/sdX | gzip > backup.img.gz
  • 恢复压缩备份
    bash gunzip -c backup.img.gz | dd of=/dev/sdX

通过合理使用 dd,你可以高效完成磁盘操作任务,但务必确认命令参数后再执行!