如何在Linux下使用dd制作副本又不破坏你的磁盘?

译文
系统 Linux
本文教你使用Linux dd工具,安全可靠地为驱动器、分区和文件系统制作完美副本。

【51CTO.com快译】 本文教你使用Linux dd工具,安全可靠地为驱动器、分区和文件系统制作***副本。

[[235906]]  

无论你试图从即将坏掉的存储驱动器抢救数据,将归档备份到远程存储,还是在别处对活动分区制作一份***副本,都要知道如何安全可靠地复制驱动器和文件系统。幸好,有dd这款简单而强大的镜像复制工具,而且历史悠久。在这方面没有比它更出色的工具了。

为驱动器和分区制作***副本

如果你研究足够深入,可以用dd执行各种任务,但它最出色的功能就是让你可以玩转分区。当然,可以使用tar甚至scp来复制整个文件系统,办法就是从一台计算机复制文件,然后将它们原封不动地粘贴到另一台计算机上新安装的Linux。但是,由于那些文件系统归档不是完整的镜像,它们需要在两头都运行主机操作系统作为基础。

另一方面,使用dd可以为几乎任何数字化内容制作逐字节对应的***镜像。但是在你开始将分区从一个地方复制到另一个地方,有必要提一下:“dd代表磁盘破坏者”这句盛传于Unix管理员当中的老话有一定道理。即使在dd命令中输错哪怕一个字符,都会立即***地清除整个驱动器的宝贵数据。是的,确保输入无误很重要。

切记:在按下回车键调用dd之前,务必要考虑清楚!

dd的基本操作

我们已对你作了必要的警告,先从简单的方面开始入手。假设你想为被指定为/dev/sda的整个磁盘的数据创建一个精确镜像。你已插入了空的驱动器(理想情况下容量与/dev/sda系统一样大)。语法很简单:if =定义源驱动器,of =定义保存数据的文件或位置: 

  1. # dd if=/dev/sda of=/dev/sdb 

下一个例子将创建/dev/sda驱动器的.img归档,将其保存到用户帐户的主目录中: 

  1. # dd if=/dev/sda of=/home/username/sdadisk.img 

那些命令创建了整个驱动器的镜像。你还可以专注于驱动器中的单个分区。下一个例子执行该操作,还使用bs设置一次复制的字节数(本例中是4096个字节)。调整bs值可能会影响dd操作的整体速度,但理想的设置将取决于你的硬件配置文件及其他考量因素。 

  1. # dd if=/dev/sda2 of=/home/username/partition2.img bs=4096 

恢复起来很简单:实际上只要将if的值和of的值反过来。在本文中,if=对应你想要恢复的镜像,of=对应你想要写入镜像的目标驱动器: 

  1. # dd if=sdadisk.img of=/dev/sdb 

还可以在一个命令中同时执行创建操作和复制操作。比如说,该例子将使用SSH创建远程驱动器的压缩镜像,并将生成的归档保存到本地计算机: 

  1. # ssh username@54.98.132.10 "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz 

你应该始终测试归档,确认它们是否正常可用。如果它是你创建的启动驱动器,将它插入到计算机,看看是否正常启动。如果它是普通的数据分区,挂载它以确保文件存在且可以正常访问。

用dd擦除磁盘

多年前,我有个朋友为其政府负责海外大使馆的安保工作。他曾告诉我,他监管的每个大使馆都配有政府发放的一把锤子。为什么?万一大使馆遇到什么危险,可以使用这把锤子砸烂所有硬盘。

那为什么不删除数据呢?你不是在开玩笑吧?众所周知,从存储设备删除含有敏感数据的文件实际上删除不了数据。如果时间够充裕、动机够强烈,可以从几乎任何数字介质找回几乎任何数据,那些被砸得稀巴烂的数字介质除外。

然而,你可以使用dd让不法分子极难搞到你的旧数据。这个命令将花一些时间在/dev/sda1分区的每个角落上创建数百万个0: 

  1. # dd if=/dev/zero of=/dev/sda1 

但它可以变得更好。使用/dev/urandom文件作为来源,你可以使用随机字符写入到磁盘: 

  1. # dd if=/dev/urandom of=/dev/sda1 

监控dd操作

由于磁盘或分区归档可能要花很长时间,你可能需要为命令添加进度监控工具。安装Pipe Viewer(Ubuntu上执行sudo apt install pv),并将其插入到dd。使用pv,***一个命令看起来像这样: 

  1. # dd if=/dev/urandom | pv | dd of=/dev/sda1  
  2. 4,14MB 0:00:05 [ 98kB/s] [      <=>                  ] 

厌烦了备份和磁盘管理?有了dd,你不会有太多的借口。它用起来其实不难,不过要小心。祝你好运!

原文标题:How to use dd in Linux without destroying your disk,作者:David Clinton

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:庞桂玉 来源: 51CTO
相关推荐

2018-07-23 09:50:39

Linuxdd命令磁盘

2019-03-28 08:00:00

Linux磁盘IO监控存储设备

2014-12-23 09:37:09

Linuxrsync

2023-09-24 19:29:44

LinuxWebP图像

2018-06-25 11:58:23

Linuxparted磁盘分区

2017-03-09 19:32:22

LinuxWindowsUSB

2022-03-09 14:43:38

LinuxDLNA

2019-03-28 09:25:51

Linux磁盘命令

2009-10-22 10:50:47

linux磁盘管理命令

2020-11-22 07:20:15

LinuxEtcherUSB

2009-07-15 17:52:23

sqlite jdbc

2022-09-01 13:12:53

LinuxTC网络限流

2011-01-11 14:04:26

2018-03-08 09:14:45

云计算虚拟磁盘

2015-09-28 10:12:21

Linux磁盘碎片

2015-09-25 15:57:09

磁盘碎片整理Linux

2021-03-25 12:50:31

Linux磁盘命令

2020-11-17 11:19:48

Linux磁盘空间

2011-03-09 15:54:34

LAMP

2017-04-29 11:43:49

Linux磁盘fdisk
点赞
收藏

51CTO技术栈公众号