Linux下如何克隆磁盘/分区命令dd入门

时间:2022-07-27
本文章向大家介绍Linux下如何克隆磁盘/分区命令dd入门,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

折腾服务器或者是专业的服务器运维都会遇到迁移数据或磁盘的情况。Linux下就提供了非常简单且强大的dd命令,它可以拯救即将损坏磁盘的数据、远程备份或者进行完整的分区拷贝。

岩兔站整理了一下dd命令的简单用法,与大家分享一下。

为什么使用dd

如果是复制或备份数据,可以使用tar或者scp命令,但是通常的文件复制仅限于在多台正常运行的linux系统之内。使用dd命令,可以做到字节对字节的复制,所以在正式开始操作之前,一定要注意拼写,因为一条错误的语句很可能会将整个系统毁掉。

注意:如果命令中包含dd,在执行之前一定要再次确认每一个字母,避免拼写出错。

基础语法

下面可以开始简单的试用一下dd命令。

复制磁盘

比如你想将磁盘/dev/sda完整的复制,首先需要准备一个新的磁盘空间,如:/dev/sdb。使用dd命令时需要包含if=表示源磁盘,和of=表示目标磁盘。所以命令如下:

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

创建img镜像

将分区创建为镜像,并存储于/home目录下

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

创建分区镜像

上述都是复制整个磁盘,如果只想复制某个分区,如:/dev/sda2,也是完全没问题。

同时可以使用bs参数,规定一次拷贝的字节数,如:bs=4096。合理使用bs参数可以优化dd执行速度,bs的合理范围要参考本机的性能进行具体设置。

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

还原镜像

还原镜像也很简单,原理与创建镜像相同,只需颠倒if=of=两个参数的内容即可,如:

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

异地备份

可以通过与SSH命令组合,进行异地服务器磁盘的备份。如将远端服务器1.2.3.4的磁盘/dev/sda备份至本地bakup.gz

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

成功备份的磁盘要注意测试。如果是可引导磁盘可将其还原至新计算机,尝试是否能正常启用。如果是普通数据盘,挂载后能正常读取。

覆写磁盘

更换磁盘时,如果原磁盘包含有敏感数据,处理起来就要小心了,因为所有删除甚至格式化的内容都有可能使用技术手段进行还原。

有人说最妥善最简单的方法是用锤子抹盘。但这样做未免有点太浪费了,使用dd命令即可完全抹盘。

使用0填充整个硬盘:

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

或者,使用随机数填充整个硬盘,效果更佳:

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

监视进程

根据磁盘大小,dd运行过程可能会耗时很长,如果想要在执行过程中查看进度,需要使用pv工具。

首先安装pv工具

Ubuntu/debian
# sudo apt install pv
或CentOS
# sudo yum install pv

然后运行dd命令,效果如下

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