Linux使用dd命令来复制和转换数据的操作方法

2025-01-23 04:50

本文主要是介绍Linux使用dd命令来复制和转换数据的操作方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文...

简介

linux 中的 dd 命令是一个功能强大的数据复制和转换实用程序。它以较低级别运行,通常用于创建可启动的 USB 驱动器、克隆磁盘和生成随机数据等任务。

dd 全称可以为:data duplicatordisk desjstroyerData Definition

功能和能力

  • 磁盘映像:创建整个磁盘或分区的精确、逐位副本

  • 数据擦除:使用零或随机数据安全地覆盖驱动器

  • 文件转换:ASCII 和 EBCDIC 之间的转换、字节顺序交换和文件填充

  • 数据恢复:通过忽略读取错误从故障驱动器读取数据

  • 可启动媒体创建:将磁盘映像写入 USB 驱动器或 SD 卡

  • 存储性能测试:对驱动器写入速度进行粗略的基准测试

语法

dd if=&l编程t;input_file> of=<output_file> [options]
  • if:输入文件(源文件或设备,例如 /dev/sda/dev/zero

  • of:输出文件(目标文件或设备,例如,/dev/sdbmyfile.img

  • Options:自定义的行为选项

常用选项

  • bs=[BYTES]:将输入和输出块大小都设置为 BYTES

块大小表示 dd 命令每次输入或输出一次性读取或写入的数据大小

  • count=[N]:仅复制 N 个输入块

  • skip=[N]:开始复制之前跳过输入文件中的 N 个块

  • seek=[N]:开始写入之前跳过输出文件中的 N 个块

  • conv=[TYPE]:指定转换类型(例如,sync、noerror、notrunc

  • status=[LEVEL]:控制输出详细程度(例如,none、 noxfer、 progress

  • iflag=[FLAGS]:输入特定标志(direct、sync

  • oflag=[FLAGS]:输出特定标志(append、sync

  • ibs:设置输入块大小

  • obs:设置输出块大小

  • noerror:读取错误后继续

  • notrunc:不要截断输出文件

  • sync:使用 NULL 填充每个输入块至 ibs 大小

示例用法

基础用法

dd if=source.txt of=destination.txt

# 如果目标文件不存在,则自动创建,否则会覆盖目标文件

创建可启动的 USB 驱动器

将 ISO 文件写入 USB 驱动器

sudo dd if=Ubuntu.iso of=/dev/sdb bs=4M status=progress
  • if=ubuntu.iso:输入的 ISO 文件

  • of=/dev/sdb:输出的 USB 设备

  • bs=4M:使用 4 MB 的块大小来加快复制速度

  • status=progress:操作过程中显示进度

备份磁盘

创建磁盘镜像

sudo dd if=/dev/sda of=backup.img bs=64K conv=sync,noerror
  • if=/dev/sda:输入的原磁盘设备

  • of=backup.img:输出的磁盘镜像

  • bs=64K:块大小为 64 KB

  • conv=sync,noerror:当发生错误时继续China编程读取,并用控制填充

从镜像中恢复磁盘

sudo dd if=backup.img of=/dev/sda bs=64K

创建包含随机数据的文件

dd if=/dev/urandom of=random_data.bin bs=1M count=10
  • if=/dev/urandom:随机输入源

  • of=random_data.bin:输出的文件

  • bs=1M:区块大小为 1 MB

  • count=10:创建一个 10 MB 的文件

安全擦除磁盘

使用随机数据覆盖磁盘

sudo dd if=/dev/urandom of=/dev/sda bs=1M status=progress

测试磁盘写入速度

将零写入磁盘以测试写入速度

sudo dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct

将文件拆分成块

将文件分割成更小的块

dd if=largefile of=smallfile bs=1M count=100

防止覆盖目标文件

dd if=source.txt of=destination.txt conv=notrunc

将数据追加到文件

dd if=users.txt of=newusers.txt conv=append

压缩 dd 读取的数据

sudo dd if=/dev/sda bs=1M | gzip -c -9 > sda.dd.gz

操作过程中显示进度条

dd if=source_file of=destination_file status=progress

将文件的数据格式从 EBCDIC 转换为 ASCII

sudo dd if=textfile.ebcdic of=textfile.ascii conv=ascii

关键转换标志

  • sync:用空字节填充每个块以达到指定的大小

  • noerror:尽管读取有错误,仍继续操作

  • notrunc:不要截断输出文件

  • ucase:将文本转换为大写

  • lcase:将文本转换为小写

以上就是Linux使用dd命令来复制和转China编程换数据的操作方法的详细内容,更多关于Linux dd命令复制和转换数据的资料请关注编程China编程(www.chinasem.cn)其它相关文章!

这篇关于Linux使用dd命令来复制和转换数据的操作方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153192

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC