如何在 Linux 中使用 dd 命令而不破坏磁盘
安全可靠地使用 linux 的 dd 工具对驱动器、分区和文件系统进行完美拷贝
。
无论你是试图从一个即将死亡的存储驱动器中抢救数据,将存档备份到远程存储,还是在其他地方制作一个活动分区的完美副本,你都需要知道如何安全可靠地复制驱动器和文件系统。幸运的是,dd 是一个简单而强大的复制工具,它已经存在了很长时间。在这段时间里,没有什么比这更好的了。
制作驱动器和分区的完美副本
使用 dd 工具,有各种各样的东西你可以用来玩, 如果你足够努力的研究,但它的闪光之处在于,它让你玩分区。当然,你可以使用 tar 甚至 scp 。 通过从一台计算机复制文件,然后将它们粘贴到另一台计算机上的新安装的 Linux 上,从而复制整个文件系统。但是,由于这些文件系统存档不是完整的映像,因此它们需要两端运行的主机操作系统作为基础。
另一方面,使用 dd 可以生成几乎任何数字内容的完美字节对字节图像。但是在您开始将分区从地球的一端抛向另一端之前,我应该提到一个 Unix 管理员的老笑话: “ dd 代表磁盘毁灭者。” 如果在 dd 命令中键入任何一个错误的字符,都可以立即永久地清除整个有价值的数据驱动器。是的,拼写很重要。
记住: 在按 Enter 键调用 dd 之前,请暂停并仔细思考!
基本的 dd 操作
既然你已经得到了适当的警告,我们就从简单的事情开始。假设您想要创建一个指定为 / dev / sda 的整个磁盘数据的精确映像。您已经插入了一个空驱动器(理想情况下,它具有与 / dev / sda 系统相同的容量)。语法很简单: 如果定义了源驱动器,并且定义了你想要保存数据的文件或位置:
# dd if=/dev/sda of=/dev/sdb
下一个示例将创建一个 Img 归档 / dev / sda 驱动器,并将其保存到用户帐户的主目录:
# dd if=/dev/sda of=/home/username/sdadisk.img
这些命令创建了整个驱动器的图像。 您还可以关注来自驱动器的单个分区。 下一个示例就是这样做的,并且还使用 b 来设置一次要复制的字节数(本例中为4,096)。 使用 bs 值可能会影响 dd 操作的总体速度,尽管理想的设置将取决于硬件配置文件和其他考虑因素。
# dd if=/dev/sda2 of=/home/username/partition2.img bs=4096
还原很简单: 实际上,可以反转 if 和 of 的值。 在这种情况下,if 接受要还原的映像,而 of 接受要写入映像的目标驱动器:
# dd if=sdadisk.img of=/dev/sdb
您还可以在一个命令中执行创建和复制操作。 例如,这个示例将使用 SSH 创建一个远程驱动器的压缩映像,并将生成的归档文件保存到本地机器:
# ssh username@54.98.132.10 "dd if=/dev/sda | gzip -1 -" | \ dd of=backup.gz
你应该经常测试你的存档,以确认它们是否有效。 如果这是您创建的启动驱动器,将其插入计算机,看看它是否按预期启动。 如果它是一个普通的数据分区,则挂载它以确保文件同时存在并且可以适当地访问。
使用 dd 擦除磁盘
几年前,我有一个朋友负责他的政府驻外使馆的安全。他曾经告诉我,在他的监管下,每个大使馆都配备了一把政府发放的正式锤子。为什么?万一设施有被不友好的敌人侵占的危险,锤子将被用来摧毁他们所有的硬盘驱动器。
那是什么?为什么不直接删除数据呢?你在开玩笑吧?每个人都知道,从存储设备中删除包含敏感数据的文件实际上并不会删除数据。只要有足够的时间和动力,几乎任何东西都可以从任何数字媒体中检索到,只有那些锤打得很好的媒体除外。
但是,您可以使用 dd 使坏人更加难以获取您的旧数据。这个命令将花费一些时间在 / dev / sda1分区的每个角落和缝隙上写上数以百万计的零:
# dd if=/dev/zero of=/dev/sda1
但还有更好的。 使用 / dev / urandom 文件作为源代码,您可以对具有随机字符的磁盘进行写操作:
# dd if=/dev/urandom of=/dev/sda1
监察 dd 的运作
由于磁盘或分区归档可能需要很长时间,因此您可能希望在命令中添加进度监视器。安装管道查看器(sudo apt Install pv on Ubuntu)并将其插入 dd。对于 pv,最后一个命令可能如下所示:
# dd if=/dev/urandom | pv | dd of=/dev/sda14,14MB 0:00:05 [ 98kB/s] [ <=> ]
推迟备份和磁盘管理? 有了 dd,你就没有太多的借口了。 这真的不难,但是要小心。 祝你好运!
相关推荐
-
第18问:MySQL CPU 高了,怎么办?2025-02-24 10:27:18
-
mysql索引类型 normal, unique, full text
mysql索引类型 normal, unique, full text2025-02-24 10:05:05 -
uwsgi+django+nginx 搭建部分总结2025-02-24 10:03:33
-
使用Docker配置Nginx环境部署Nextcloud2025-02-24 10:02:03
-
Nginx安装和怎么使用2025-02-24 10:00:45