dd 命令主要用来进行数据备份,并且可以在备份的过程中进行格式转换。其实 dd 命令可以把源数据复制成目标数据,而且不管源数据是文件、分区、磁盘还是光盘,都可以进行数据备份。

dd 命令的基本格式如下:

[root@localhost ~]# dd if="输入文件" of="输出文件" bs="数据块" count="数量"

参数:

if:定义输入数据的文件,也可以是输入设备;

of:定义输出数据的文件,也可以是输出设备;

bs:指定数据块的大小,也就是定义一次性读取或写入多少字节。模式数据块大小是 512 字节;

count:指定 bs 的数量;

conv=标志:依据标志转换文件。标志有以下这些:

ascii:由 EBCDIC 码转换至 ASCII 码;

ebcdic:由 ASCII 码转换至 EBCDIC 码;

ibm:由 ASCII 码转换至替换的 EBCDIC 码;

block:将结束字符块里的换行替换成等长的空格;

unblock:将 cbs 大小的块中尾部的空格替换为一个换行符;

lcase:将大写字符转换为小写;

notrunc:不截断输出文件;

ucase:将小写字符转换为大写;

swab:交换每一对输入数据字节;

noerror:读取数据发生错误后仍然继续;

sync:将每个输入数据块以 NUL 字符填满至 ibs 的大小;当配合 block 或 unblock 时,会以空格代替 NUL 字符填充;

【例 1】备份文件

[root@localhost ~]# dd if=/etc/httpd/conf/httpd.conf of=/tmp/httpd.bak

记录了67+1 的读入

#数据占了写满的67个数据块,以及1个没有写满的数据块

记录了67+1 的写出

#默认数据块大小是512字节

34439字节(34 kB)已复制,0.0524897 秒,656 kB/秒

#如果要备份文件,那么dd命令和cp命令非常类似

[root@localhost ~]# ll -h /tmp/httpd.bak

-rw-r--r--.1 root root 34K 6月 5 18:04 /tmp/httpd.bak

#查看一下生成的备份文件的大小

【例 2】备份分区为一个备份文件

[root@localhost ~]# df -h

文件系统 容量 已用 可用 已用%% 挂载点

/dev/sda3 20G 2.0G 17G 11% /

tmpfs 306M 0 306M 0% /dev/shm

/dev/sda1 194M 27M 157M 15% /boot

/dev/sr0 3.5G 3.5G 0 100% /mnt/cdrom

#查看一下分区容量,我们备份/boot分区

[root@localhost ~]# dd if=/dev/sda1 of=/tmp/boot.bak

#备份完成

[root@localhost ~]# ll -h /tmp/boot.bak

-rw-r--r--.1 root root 200M 6月 5 18:14 /tmp/boot.bak

#查看生成的备份文件

#如果需要恢复,则执行以下命令

[root@localhost ~]# dd if=/tmp/boot.bak of=/dev/sda1

如果想要把分区直接备份成另一个分区,就需要生成一个新的分区,这个分区的大小不能比源分区小,只能和源分区大小一致或比它大。命令如下:

[root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb1

#如果需要恢复,则只需把输入项和输出项反过来即可,命令如下

[root@localhost ~]# dd if=/dev/sdb1 of=/dev/sda1

【例 3】整盘备份

[root@localhost ~]# dd if=/dev/sda of=/dev/sdb

#把磁盘a备份到磁盘b

[root@localhost ~]# dd if=/dev/sda of=/tmp/disk.bak

#把磁盘a备份成文件disk.bak

#备份恢复

#如果要备份到另一块硬盘上,那么,当源硬盘数据损坏时,只需用备份硬盘替换源硬盘即可

#如果要备份成文件,那么在恢复时需要把备份数据复制到其他Linux中,然后把新硬盘安装到这台Linux

#服务器上,再把磁盘备份数据复制到新硬盘中。命令如下

[root@localhost ~]# dd if=/tmp/disk.bak of=/dev/sdb

【例 4】复制软盘

[root@localhost ~]# dd if=/dev/fd0 of=/tmp/fd.bak

#在Linux中软盘的设备文件名是/dev/fd0

#这条命令先把软盘中的数据保存为临时数据文件

[root@localhost ~]# dd if=/tmp/fd.bak of=/dev/fd0

#然后更换新的软盘,把数据备份复制到新软盘中,就实现了软盘的复制

如果需要备份的是光盘,那么在 Linux 中就是使用 dd 命令制作光盘的 ISO 镜像的。命令如下:

#制作光盘ISO镜像

[root@localhost ~]# dd if=/dev/cdrom of-/tmp/cd.iso #把光盘中所有的数据制作成ISO镜像

[root@localhost ~J # mkdir /mnt/cd

#建立一个新的挂载点

[root@localhost ~]# mount -o loop /tmp/cd.iso /mnt/cd #挂栽ISO文件到挂载点

[root@localhost ~]# cd /mnt/cd

#进入挂栽点

[root@localhost cd]# ls

CentOS_BuildTag images RELEASE-NOTES-en-tJS.html RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL

EULA    isolinux repodata   RPM-GPG-KEY-CentOS-Security-6

GPL Packages RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6

#数据是光盘当中的数据,这个ISO镜像是可以被当作真正的光盘使用的

我们有时需要制作指定大小的文件,比如,在增加 swap 分区时,就需要建立指定大小的文件,这时也使用 dd 命令。命令如下:

[root@localhost ~]# dd if=/dev/zero of=/tmp/testfile bs=1M count=10

#数据输入项是/dev/zero会向目标文件中不停地写入二进制的0

#指定数据块大小是1MB

#指定生成10个数据块。也就是定义输出的文件大小为10MB

记录了10+0 的读入

#显示数据占满了10个数据块

记录了10+0 的写出

#不过这里数据块的大小已经是1MB了

10485760字节(10 MB)已复制,0.00709902 秒,1.5 GB/秒

[root@localhost ~]# ll -h /tmp/testfile

-rw-r--r--.1 root root 10M 6月 5 18:46 /tmp/testfile

#生成的testfile文件的大小刚好是10MB

dd 命令在进行整盘复制时,类似于 GHOST 工具的功能,不过通过 dd 命令复制出来的硬盘数据要比 GHOST 复制出来的硬盘数据稳定得多。虽然 dd 命令功能强大,不过也有一个明显的缺点,就是复制的时间较长,复制 100GB 的数据需要 15~25 分钟(根据服务器的性能不同而不同)。

实现数据备份还有非常多的方法和工具,比如 tar 和 cpio 命令。至于网络复制工具,如 rsync 和 scp 等,需要较完善的网络知识才能够学习,这里不再介绍。

linux vi dd命令详解,Linux dd命令详解:数据备份,并在备份过程中进行格式转换...相关推荐

  1. linux vi后不保存退出,linux下退出VI的方法:不保存退出

    当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一. 在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell:若当前编辑的文件没被修 ...

  2. 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!

     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigame.com/android-game/327.html 很多童鞋说 ...

  3. mac下使用命令行工具sips实现单个或批量图片缩放、旋转、翻转和格式转换

    sips是mac下的一个命令行工具,可以实现单个批量图片裁剪.缩放.旋转.翻转和格式转换. 指定宽度为600像素,高度自适应缩放 sips -Z 600 test.jpg 批量指定宽度为600像素,并 ...

  4. linux vi 看下一页,linux中的vi命令(2)

    4.Last line mode下命令简介 在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line ...

  5. linux vi调至文件尾,linux vi从当前行复制到文件尾的命令?

    用户:邓一邓一邓一 2017年11月05日 基於linux 的精神,这个该用sed来做吧,假设文件这样 nc10@your-5554c55be4 ~ $ cat bin/funfacts.pl #! ...

  6. linux vi回到末行模式,Linux vi/vim 的命令模式,,编辑模式,末行模式

    命令模式:可以随意的打开一个文件.比如操作 1.[root@room9pc16 ~]# vim /tmp/passwd 按下enter健将会出现如下信息: root:x:0:0:root:/root: ...

  7. linux vi编译显示行号,Linux编辑器vi、vim、gedit显示行号

    在Linux环境下的编辑器有vi.vim.gedit等等.进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的. 我们有二种办法可以解决: 第一种是,手动显示: ...

  8. linux中csv格式转换,在Linux中CSV转换成XLSX

    Java进击C#--项目开发环境 本章简言 上一章我们了解一下开发环境,知道了什么去新建一个项目工程.却并没有去项目工程进行介绍.可是之后我们会常常跟项目工程打交道.所以这章笔者就对项程工程的常用的一 ...

  9. [Linux 基础] -- V4L2 实例分析 —— vivi.c 源码详解(深度好文)

    本文主要是通过对虚拟视频驱动程序 vivi.c 源码分析,加深对 V4L2 框架的理解.转载于:https://blog.csdn.net/yanbixing123/article/details/5 ...

  10. linux vi 不保存退出

    你使用linux vi/vim 文本编辑器对linux下某个配置文件做编辑操作,当你更改完之后,可以保存退出文件,也可以不保存退出vi/vim 编辑器,也就是说更改的所有操作都不会保存.当你通过vi/ ...

最新文章

  1. MVC 之 架构的基本原理及Asp.Net实现MVC
  2. 手机端网页中图片之间出现白线的解决方法
  3. [C++] 匿名管道的理解与实现
  4. 【SpringBoot】在IOC之外的类中使用IOC内部的Bean
  5. python归并排序 分词_python实现归并排序,归并排序的详细分析
  6. leetcode No.21 合并两个有序链表
  7. 查找指定日期数据所在分区数据
  8. 利用python模拟菜刀反弹shell绕过限制
  9. UOJ418. 【集训队作业2018】三角形
  10. 又酸了!腾讯员工福利再升级:入职满15年可“提前退休”
  11. bzoj 2464: 中山市选[2009]小明的游戏(BFS)
  12. 使用Object.prototype.toString判断数据类型
  13. 3分钟微信支付商家注册0.2费率开户方法,0.38~0.6的必看
  14. php数据库ip,php读取纯真ip数据库使用示例
  15. 金色传说:SAP-PPDS-SAPAPO/RRP3增强:控制界面需求数量字段修改后检查增强/用户事件USERCOMMAND响应增强
  16. TVP大佬组队,吐槽鹅厂数据库?!
  17. 小米有品众筹仅249!Oclean X智能触屏电动牙刷6日劲爆开抢
  18. 美苏太空竞赛历年卫星火箭发射以及历史事件介绍
  19. mysql随机生成名字,起名不求人
  20. fineReport10连接达梦数据库

热门文章

  1. Linux Huge page
  2. SpringBoot之整合thymeleaf渲染Web页面
  3. MATLAB读取10bit的raw格式图片代码
  4. 区块链大咖谈之董天一:深度理解IPFS与Filecoin应用的几个关键点
  5. Android开发获取ImageView显示的图片尺寸
  6. Clickhouse查询语句 sample
  7. TikTok干货分享:创作者基金申请流程及常见问题解答
  8. CNZZ站长统计怎么用
  9. Windows下安装tomcat7并设置开机启动服务
  10. 获取json格式中属性—sql