首页 > 系统相关 >Linux常用命令之dd命令详解

Linux常用命令之dd命令详解

时间:2024-11-15 14:49:14浏览次数:3  
标签:dd bs 常用命令 dev 4M sda Linux 磁盘

dd 命令详解

dd 命令是 Unix 和 Linux 系统中一个非常强大的工具,用于转换和复制文件。它可以用来备份和恢复磁盘或分区、创建和修改文件系统、以及进行各种数据操作。dd 命令的灵活性和强大功能使其在系统管理、数据恢复和安全领域中广泛使用。

基本语法
dd [选项] if=输入文件 of=输出文件

其中:

  • if=输入文件:指定输入文件。默认为标准输入(stdin)。
  • of=输出文件:指定输出文件。默认为标准输出(stdout)。
  • bs=块大小:指定读取和写入的块大小。默认为 512 字节。
  • count=块数:指定要复制的块数。
  • skip=块数:在读取输入文件之前跳过的块数。
  • seek=块数:在写入输出文件之前跳过的块数。
  • conv=转换列表:指定数据转换方式。
常用选项
  1. if=输入文件

    • 指定输入文件。例如:
      dd if=input.img
      
  2. of=输出文件

    • 指定输出文件。例如:
      dd of=output.img
      
  3. bs=块大小

    • 指定读取和写入的块大小。例如:
      dd bs=1M
      
  4. count=块数

    • 指定要复制的块数。例如:
      dd count=10
      
  5. skip=块数

    • 在读取输入文件之前跳过的块数。例如:
      dd skip=1
      
  6. seek=块数

    • 在写入输出文件之前跳过的块数。例如:
      dd seek=1
      
  7. conv=转换列表

    • 指定数据转换方式。常见的转换选项包括:
      • notrunc:不截断输出文件。
      • noerror:遇到读取错误时继续。
      • sync:使用零填充不足的块。
      • swab:交换每对字节。
      • ascii:转换为 ASCII。
      • ebcdic:转换为 EBCDIC。
      • ibm:转换为 IBM EBCDIC。
      • lcase:转换为小写。
      • ucase:转换为大写。
      • block:转换为块格式。
      • unblock:转换为非块格式。
    • 例如:
      dd conv=notrunc,noerror
      
常见用法
  1. 备份和恢复磁盘或分区

    • 备份磁盘
      sudo dd if=/dev/sda of=backup.img bs=4M
      
    • 恢复磁盘
      sudo dd if=backup.img of=/dev/sda bs=4M
      
  2. 创建启动盘

    • 将 ISO 文件写入 USB 驱动器
      sudo dd if=path/to/iso of=/dev/sdb bs=4M
      
  3. 创建空文件

    • 创建一个 1GB 的空文件
      dd if=/dev/zero of=emptyfile bs=1G count=1
      
  4. 克隆磁盘

    • 克隆一个磁盘到另一个磁盘
      sudo dd if=/dev/sda of=/dev/sdb bs=4M
      
  5. 擦除磁盘

    • 使用随机数据擦除磁盘
      sudo dd if=/dev/urandom of=/dev/sda bs=4M
      
  6. 转换文件格式

    • 将 EBCDIC 文件转换为 ASCII 文件
      dd if=input.ebcdic of=output.ascii conv=ascii
      
  7. 复制并压缩文件

    • 复制文件并使用 gzip 压缩
      dd if=inputfile | gzip > outputfile.gz
      
  8. 检查磁盘读取速度

    • 测试磁盘读取速度
      dd if=/dev/sda of=/dev/null bs=4M
      
  9. 检查磁盘写入速度

    • 测试磁盘写入速度
      dd if=/dev/zero of=testfile bs=4M count=1024
      
注意事项
  1. 谨慎使用

    • dd 命令非常强大,但也非常危险。特别是当涉及到磁盘和分区操作时,错误的命令可能会导致数据丢失。在执行任何操作之前,请确保备份重要数据。
  2. 确认设备名称

    • 在使用 dd 命令时,务必确认设备名称(如 /dev/sda/dev/sdb 等)正确无误,以免误操作导致数据丢失。
  3. 合理设置块大小

    • 合理设置 bs 参数可以提高 dd 命令的性能。通常情况下,较大的块大小(如 4M1G)可以提高读写速度。
  4. 使用 sudo

    • 对于涉及磁盘和分区的操作,通常需要超级用户权限。使用 sudo 可以确保命令具有足够的权限。
示例
  1. 备份整个磁盘

    • /dev/sda 磁盘备份到 backup.img 文件中,块大小为 4M。
      sudo dd if=/dev/sda of=backup.img bs=4M
      
  2. 恢复磁盘备份

    • backup.img 文件恢复到 /dev/sda 磁盘中,块大小为 4M。
      sudo dd if=backup.img of=/dev/sda bs=4M
      
  3. 创建启动 USB 驱动器

    • 将 ISO 文件 ubuntu-20.04.iso 写入 USB 驱动器 /dev/sdb,块大小为 4M。
      sudo dd if=ubuntu-20.04.iso of=/dev/sdb bs=4M
      
  4. 创建 1GB 的空文件

    • 创建一个 1GB 的空文件 emptyfile
      dd if=/dev/zero of=emptyfile bs=1G count=1
      
  5. 克隆磁盘

    • 将磁盘 /dev/sda 克隆到磁盘 /dev/sdb,块大小为 4M。
      sudo dd if=/dev/sda of=/dev/sdb bs=4M
      
  6. 使用随机数据擦除磁盘

    • 使用随机数据擦除磁盘 /dev/sda,块大小为 4M。
      sudo dd if=/dev/urandom of=/dev/sda bs=4M
      
  7. 转换文件格式

    • 将 EBCDIC 文件 input.ebcdic 转换为 ASCII 文件 output.ascii
      dd if=input.ebcdic of=output.ascii conv=ascii
      
  8. 复制并压缩文件

    • 复制文件 inputfile 并使用 gzip 压缩,输出为 outputfile.gz
      dd if=inputfile | gzip > outputfile.gz
      
  9. 检查磁盘读取速度

    • 测试磁盘 /dev/sda 的读取速度,块大小为 4M。
      dd if=/dev/sda of=/dev/null bs=4M
      
  10. 检查磁盘写入速度

    • 测试磁盘的写入速度,创建一个 4GB 的文件 testfile,块大小为 4M。
      dd if=/dev/zero of=testfile bs=4M count=1024
      
  11. 测试硬盘性能

  • 向硬盘写入 4G 大小的内容,测试硬盘读写性能,oflag=direct 不经过内存,直接写入硬盘。
    dd if=/dev/zero of=/data/testfile bs=1M count=4096 oflag=direct
    
  1. 观察 IO 变化
  • 开两个终端,一个终端执行此命令,另一个终端执行 iostat -x 1 观察 IO 变化。
    time -p bash -c "(dd if=/dev/zero of=/root/cc/a.txt bs=1M count=4096)"
    
  1. 备份 MBR
  • 备份 MBR,默认单位字节,K 为千字节。
    dd if=/dev/sda of=/mnt/mbr.backup bs=512 count=1
    
  • 还原 MBR
    dd if=/mnt/mbr.backup of=/dev/sda bs=512 count=1
    
  1. 备份主引导程序
  • 备份主引导程序,注意存储单位,默认为字节,K 为千字节,备份不要放在 /dev/sda分区。
    dd if=/dev/sda of=/root/init bs=1 count=446
    
  • 使用备份的主引导程序进行恢复
    dd if=/root/init of=/dev/sda
    
  1. 备份超级块
  • 备份超级块
    dd if=/dev/sdb of=/root/block bs=1K count=4
    
  • 利用备份的超级块进行恢复
    dd if=/root/block of=/dev/sdb
    
  1. 备份 MBR 分区表
  • 备份 MBR 分区表
    dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446
    
  1. 将 ISO 文件写入 USB 驱动器
    • 创建可启动 USB,一次读 4M 的数据,status=progress 显示进度
      dd if=/path/to/image.iso of=/dev/sde bs=4M status=progress
      
  2. 创建一个 1G 的文件,将其制作为交换分区
    • 创建一个 1G 的文件
      dd if=/dev/zero of=/var/swapfile bs=1M count=1024
      
    • 将其制作为交换分区
      mkswap /var/swapfile
      swapon /var/swapfile
      
  3. 制作光盘镜像
  • 制作光盘镜像
    dd if=/dev/cdrom of=/root/rhel5.iso
    
  • 另一种方法
    cat /dev/cdrom > /root/rhel5.iso
    
  1. 进程
  • dd if=/dev/zero of=/dev/null 会占用大量的 CPU 资源,因为进程优先级相同,系统大概率不会死机。
  • 调高优先级占用 CPU,-f 优先级 1-99,系统会死机。
    chrt -f 10 dd if=/dev/zero of=/dev/null
    

总结

dd 命令是一个功能强大且灵活的工具,适用于多种数据操作任务,如备份和恢复磁盘、创建启动盘、克隆磁盘等。通过合理使用 dd 命令及其各种选项,可以高效地完成各种复杂的文件和磁盘操作。希望本文能帮助你更好地理解和使用 dd 命令。

标签:dd,bs,常用命令,dev,4M,sda,Linux,磁盘
From: https://blog.csdn.net/weixin_56303229/article/details/143798524

相关文章

  • [转]Windows下编写的shell脚本,传到Linux执行出现bad interpreter:No such file or di
    原文地址:badinterpreter:Nosuchfileordirectory解决方法-jprothwell-博客园在Linux中执行.sh脚本,异常/bin/sh^M:badinterpreter:No such file or directory。分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执......
  • <a-modal>打开页面报错Ancestor with aria-hidden
    报错信息Blockedaria-hiddenonanelementbecauseitsdescendantretainedfocus.Thefocusmustnotbehiddenfromassistivetechnologyusers.Avoidusingaria-hiddenonafocusedelementoritsancestor.Considerusingtheinertattributeinstead,whichwi......
  • Linux系统编译QT5.15.0及串口问题
    编译流程:1>下载QT源码源码的下载可以到qt的官网http://www.qt.io/download/ 2>解压tarxvfqt-everywhere-src-x.x.x.tar.gz注意后缀和解压方式3>配置 ./configure进行环境配制。4>编译执行make编译,时间长,大概在三四个小时左右。5>安装sudomakeinstall需要5分钟......
  • 你想了解的DDS协议解决方案在这里
        随着汽车电子电气架构快速演进,车企对车内网络通信性能、安全性、灵活性要求日益提升,车载总线通信技术也迎来革新挑战。在此背景下,DDS(DataDistributionService)凭借其高性能、高可靠和低延迟的特点,有力支撑了智能汽车系统的高效运行。    DDS协议凭借其在物......
  • Linux基本指令(中)(2)
    文章目录前言一、echo二、cat三、more四、less五、head六、tail七、date八、cal九、find十、whoami十一、clear总结前言  承上启下,我们再来看看另外一些常用的基础指令吧!一、echo  语法:echo[选项][字符串]  功能:在终端设备上输出字符串或变量提取后的值......
  • Linux—进程学习-02
    目录Linux—进程学习—21.通过系统调用创建进程—fork1.1fork创建子进程1.2fork函数的返回值1.3利用fork实现多进程2.有关cpu的常识了解3.进程状态3.1从操作系统层面了解进程状态3.1.1就绪和新建状态的理解3.1.2运行和阻塞状态的理解3.1.3挂起状态的理解挂起和阻塞的区......
  • Linux忘记root密码解锁
    一、第一种方式rd.break1、重启系统,更改内核,进入紧急模式这里选择第一项或者第二项都可以(这里的区别是,第一项进去,在更改密码的时候,看到的密码更改提示是加密显示,第二项进去,在更改密码的时候,看到的密码更改提示是明文形式)。然后按e进入紧急模式(以前的版本叫做单用户模式)2、......
  • Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider,
     macm1启动项目,报错,“Unabletoloadio.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider,fallbacktosystemdefaults.ThismayresultinincorrectDNSresolutionsonMacOS.”,出现这个问题是因为使用了spring-cloud-starter-gateway依赖,这需要额外安装......
  • linux之文件权限
    文件权限管理rwx含义是指在Linux系统中,文件的权限可读(r)、可写(w)、可执行(x)。文件权限是由三组rwx组成,开头第一位表示文件的类型为文件(-)、目录(d)、链接(l)等形式rwx的数字概念r4w2x1-rwxr-xr-xrwx#属主位r-x#属组位r-x#其它位文件权限数字表示为:755文件权限......
  • Linux vi、vim
    在Linux学习,进行各种操作过程中需要用到很多种命令,本篇主要讲基础命令仅供大家参考。绝对是干货满满的一篇文章!!!vim底线模式提示:以下是本篇文章正文内容,仅供参考1.退出vim编辑器:        :W表示write,进行文本编辑写入内容,不会退出vim        :q表示quit,不......