linux dd命令详解

目录

备份磁盘并恢复

备份时进行压缩

备份磁盘的 MBR

使用 /dev/zero 和 /dev/null 来测试磁盘

利用 /dev/urandom 进行格式化

制作U盘启动盘


dd,是 device driver 的缩写,它可以称得上是“Linux 世界中的搬运工”,它用来读取设备、文件中的内容,并原封不动地复制到指定位置。

备份磁盘并恢复

好记性不如烂笔头,好硬盘不如常备份。硬盘的损坏虽然是个小概率事件,但是一旦发生却会带来灾难性的后果。对重要数据进行备份,不仅是一个好习惯,更体现了对别人对自己负责的态度。

早期的硬盘基本都是使用 hda、hdb 这种 IDE 接口的硬盘,现在的主流硬盘已经是 SATA 接口的了,下面我们把当前的linux系统盘备份到移动硬盘中。

[root@zyq images]# df
Filesystem            1K-blocks      Used Available Use% Mounted on
/dev/mapper/rhel-root 366976000 273496108  93479892  75% /
devtmpfs               16243772         0  16243772   0% /dev
tmpfs                  16260392        24  16260368   1% /dev/shm
tmpfs                  16260392     59016  16201376   1% /run
tmpfs                  16260392         0  16260392   0% /sys/fs/cgroup
/dev/loop0              3963760   3963760         0 100% /var/ftp/pub/rhel74
/dev/loop1              6935944   6935944         0 100% /var/ftp/pub/rhel8
/dev/sda2               1038336    178112    860224  18% /boot
/dev/loop2              8086368   8086368         0 100% /var/ftp/pub/centos75
/dev/sda1                204580      9960    194620   5% /boot/efi
/dev/mapper/rhel-home 104806400  84696140  20110260  81% /home
tmpfs                   3252080        44   3252036   1% /run/user/1000
/dev/sdb1             976760828 491666928 485093900  51% /run/media/zyq/Extreme SSD
[root@zyq images]# cd /run/media/zyq/Extreme\ SSD/
[root@zyq Extreme SSD]$  dd if=/dev/sda of=./sda.img

这个命令用到了如下两个选项:

  • if=文件名:指定输入文件名或者设备名,如果省略“if=文件名”,则表示从标准输入读取。
  • of=文件名:指定输出文件名或者设备名,如果省略“of=文件名”,则表示写到标准输出。

通过上面的 dd 命令,我们得到了 sda.img 文件,它就是已经备份好了的磁盘映像文件,里面存储着 /dev/sda 整块硬盘的内容。

在未来的某天,假如 /dev/sda 硬盘真的出现了故障,我们就可以将曾经备份的 sda.img 复制到另块磁盘上,然后将还原后的磁盘替换掉坏了的硬盘。

[root@zyq ~]# dd if=/root/sda.img of=/dev/sdb

 dd 操作就是简单的按字节复制,与文件系统没有任何关系。

备份时进行压缩

其实我们在使用 dd 做备份时,可以使用 gzip 或者 bzip2 压缩算法进行数据压缩处理,这样可以大大减少我们的磁盘空间用量,也就降低了备份成本。

下面就使用 gzip 压缩算法配合 dd 命令来备份 /dev/sda 盘:

[root@zyq Extreme SSD]$  dd if=/dev/sda | gzip > of=./sda.img.gz

下面我们更换 bzip2 压缩算法配合 dd 命令再来实现一遍上面示例的效果:

[root@zyq ~]# dd if=/dev/sda | bzip2 > disk.img.bz2
[root@zyq ~]# bzip2 -dc /root/sda.img.gz | dd of=/dev/sdb

  我们之前备份的磁盘是RAW格式的,原来的磁盘是多大,备份后的文件就多大,为了进一步节省磁盘空间我们可以对备份完的RAW文件进行格式转换(转换为别的磁盘格式,绝大部分磁盘格式都比RAW格式占据的空间小),再进行压缩处理。

对于 dd 命令来说,除了 if、of 两个选项之外,还应该掌握下面这两个重要选项:

  • bs=N:设置单次读入或单次输出的数据块(block)的大小为 N 个字节。当然也可以使用 ibs 和 obs 选项来分别设置。
  • ibs=N:单次读入的数据块(block)的大小为 N 个字节,默认为 512 字节。
  • obs=N:单次输出的数据块(block)的大小为 N 个字节,默认为 512 字节。
  • count=N:表示总共要复制 N 个数据块(block)。

备份磁盘的 MBR

MBR,是 Master Boot Record,即硬盘的主引导记录,MBR 一旦损坏,分区表也就被破坏,数据大量丢失,系统就再也无法正常引导了,真是不堪设想啊!所以,对 MBR 的定期备份是十分必要的,在紧急关头,把它比喻成一颗救死扶伤的速效救心丸,也绝不为过。

一块磁盘的第一个扇区的 512 个字节所存储的正是这块磁盘的 MBR 信息,我们尝试用 dd 命令备份 MBR:

[root@zyq ~]# dd if=/dev/sda of=/root/sda_mbr.img count=1 bs=512

如果未来遇到分区表损坏的情况,我们用曾经备份的 MBR 信息写回磁盘,就能起到立竿见影的效果。下面来一起看看如何将 MBR 写回硬盘:

[root@zyq ~]# dd if=/root/sda_mbr.img of=/dev/sda

使用 /dev/zero 和 /dev/null 来测试磁盘

本段落开始前,我们要为大家介绍两位新朋友:

  • /dev/null,也叫空设备,小名“无底洞”。任何写入它的数据都会被无情抛弃。
  • /dev/zero,可以产生连续不断的 null 的流(二进制的零流),用于向设备或文件写入 null 数据,一般用它来对设备或文件进行初始化。

我们可以观察下面两个命令的执行时间,来计算出硬盘的读、写性能:

#向磁盘上写一个大文件, 来看写性能
[root@zyq ~]# dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
 
#从磁盘上读取一个大文件, 来看读性能
[root@zyq ~]# dd if=/root/1Gb.file bs=64k | dd of=/dev/null

上面命令生成了一个 1GB 的文件 1Gb.file,下面我们配合 time 命令,可以看出不同的块大小数据的写入时间,从而可以测算出到底块大小为多少时可以实现最佳的写入性能。

[root@zyq ~]# time dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
[root@zyq ~]# time dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
[root@zyq ~]# time dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
[root@zyq ~]# time dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

利用 /dev/urandom 进行格式化

除了 /dev/null 和 /dev/zero 之外,还有一个很重要的文件,即 /dev/urandom,它是“随机数设备”,它的本领就是可以生成理论意义上的随机数。

[root@zyq ~]# dd if=/dev/urandom of=/dev/sda

制作U盘启动盘

还在用乱七八糟的各类工具制作启动盘吗,快试试dd这个命令

[root@zyq ~]# dd if=mycentos.iso of=/dev/sdb

if后面添加镜像文件,of后面添加U盘被识别到的设备名 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vim 是一款功能强大的文本编辑器,在 Linux 系统中广泛使用。它有许多命令可以用来编辑文本、移动光标和执行其他操作。 以下是一些常用的 Vim 命令: - i:在当前光标位置插入文本。 - x:删除当前光标所在位置的字符。 - dd:删除整行。 - u:撤销上一个操作。 - :wq:保存并退出。 - :q!:不保存退出。 - /text:搜索文本。 - :set number:显示行号。 - :set nonumber:不显示行号。 这只是 Vim 中常用命令的一小部分,它还有很多其他功能。要了解更多关于 Vim 的信息,可以在 Linux 终端中输入 "vimtutor" 并回车来进行交互式教程。 ### 回答2: Linux是一个强大的操作系统,而Vim是Linux下一个功能强大的编辑器。在Linux系统中,Vim命令是经常用到的,通过它可以使我们更高效地进行编辑和操作。 以下是关于Vim命令的详细解释: 1. 基本模式: Vim编辑器有三种基本模式,分别是普通模式,插入模式和命令行模式。普通模式是在文件中移动时的默认模式,插入模式用于输入文本内容,命令行模式可以执行编辑器命令。 2. 移动光标: 在普通模式下,可以使用键盘上的箭头或H, J, K, L等键来移动光标。另外,还可以使用其他简单的命令,例如g和G来移动到文件的开头或结尾。 3. 插入模式: 在普通模式下,按下“I”即可以进入插入模式,可以在此模式下输入文字。按ESC键可以从插入模式回到普通模式。 4. 删除、复制和粘贴: 在普通模式下,按下“d”并在其后跟随特定命令可以删除单个字符,单个单词或整行。复制文本需要使用y命令,然后在光标所在处使用p命令粘贴文本。 5. 搜索和替换: 在命令模式下,可以使用“/!”来查找特定文本。使用“:s/find/replace/g”命令可以进行替换。 6. 缩进和格式化: 可以使用“>”和“<”键对选定的文本进行缩进或取消缩进。使用“gg=G”来格式化整个文档。 7. 取消操作: 有时候在不小心删除或添加文本时都可以通过使用“u”键来进行撤回。如果需要继续进行实际编辑步骤,则可以使用“Ctrl+R”来恢复撤回的操作。 综上所述,Vim命令是Linux系统下重要的命令之一,在使用Linux系统的过程中经常会用到它。熟练地掌握Vim命令可以使您更高效地进行Linux系统操作和文本编辑工作。 ### 回答3: Linux系统下的Vim是一款非常强大的文本编辑器,集成了众多的命令,可以极大地提高代码的编写效率。下面将对Vim的常用命令进行详细的介绍。 1.新建文件 在终端输入:vim 文件名 即可新建一个文件。如果该文件不存在,则会新建一个空白文件。 2.插入模式 在Vim中,默认是命令模式。要进入插入模式可以按下i、a、o、O、r等键,其中: i:在光标前插入 a:在光标后插入 o:在下一行新建一行并插入 O:在上一行新建一行并插入 r:替换当前字符 3.保存和退出 在Vim中,要保存并退出可以使用以下命令: :wq:保存并退出 :x:保存并退出 :q!:强制退出,丢弃修改 :w:仅保存,不退出 :q:退出vim 4.移动光标 在命令模式下,可以使用以下命令移动光标: h:左移 j:下移 k:上移 l:右移 G:到文件末尾 gg:到文件开头 $:到行末 0:到行首 5.删除 在命令模式下,可以使用以下命令删除: x:删除光标所在字符 dd:删除整行 d$:删除光标到行末 d0:删除光标到行首 6.复制和粘贴 在命令模式下,可以使用以下命令复制和粘贴: yy:复制整行 yw:复制单词 y$:复制到行末 y0:复制到行首 p:粘贴 7.查找和替换 在命令模式下,可以使用以下命令进行查找和替换: /要查找的内容:向下查找 ?要查找的内容:向上查找 n:继续查找 N:反向查找 :要替换的内容/替换后的内容/g:全局替换 8.分屏 在命令模式下,可以使用以下命令进行分屏: :split:竖屏分割 :vsplit:横屏分割 Ctrl + w + h/j/k/l:切换屏幕 9.其他命令 在命令模式下,还有其他一些比较常用的命令,例如: u:撤销 Ctrl + r:恢复 ddp:交换两行 Ctrl + g:查看当前位置和文件状态 以上就是Vim的常用命令介绍。虽然Vim的命令有些复杂,但是使用熟练之后,可以大幅提高代码的编写效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值