dd 命令备份磁盘为镜像
该篇教程主要讲解 Ubuntu 下使用 dd 命令备份磁盘为镜像
dd 命令:
Linux系统中的一个强大工具,主要用于在Unix和类Unix系统上转换和复制文件。它可以从标准输入或文件中读取数据,根据指定的格式转换数据,然后输出到文件、设备或标准输出。dd命令的参数包括输入文件(if)、输出文件(of)、块大小(bs)等,这些参数允许用户精确控制数据的读取、转换和写入过程。
dd 命令的应用场景非常广泛,包括但不限于:
● 数据备份和恢复:可以使用 dd 命令备份硬盘数据到另一个硬盘,或者从备份中恢复数据。
● 磁盘擦除和数据恢复:dd 命令可以用于擦除磁盘上的数据,或者在数据丢失后尝试恢复数据。
● 性能基准测试:通过 dd 命令可以测试磁盘的读写速度,评估系统的 I/O 性能。
数据转换:dd 命令可以在复制过程中处理数据,例如转换字节序或在 ASCII 与 EBCDIC 编码间互换。
● 创建特定大小的文件:可以使用dd命令创建一个指定大小且填充了特定数据的文件,如空文件或包含随机数据的文件。
● 文本大小写转换:dd 命令还可以用于将文本文件中的小写字母转换为大写字母,或反之。
使用dd命令时,需要注意其强大的功能也伴随着潜在的风险。不正确的使用可能导致数据丢失或系统损坏。因此,在使用dd命令之前,建议详细阅读其手册页(man dd)以了解所有可用选项和参数的含义及用法,并在必要时进行充分的测试。
下载Ubuntu
这里用 Ubuntu 作为演示,如果官方下载镜像比较慢,可以用清华大学开源软件镜像站速度会快一些。
清华大学开源软件镜像站:
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases
可以点击时间进行排序,这里我下载最新的版本
这里我下载的是桌面版
搭建运行环境
如果是物理机运行要将镜像写入U盘,这里我是用虚拟机来运行的,简单说一下怎么跑起来。
将镜像放到“isos”目录
创建虚拟机,参考设置
直通需要备份的硬盘
VNC 打开,选择第一项(自动默认)
不用安装,直接关闭这个弹窗
快捷键 Ctrl+Alt+T ,打开一个终端窗口
获取 root 权限,输入下面命令:
挂载备份路径
这里演示用 SMB 进行挂载,生成的镜像会保存到这里。
安装 cifs-utils 软件包,以便支持在 Linux 系统上挂载 SMB 共享
1 | apt install cifs-utils |
创建一个名称为“backup”的文件夹
1 | mkdir /mnt/backup |
挂载 SMB 到 backup
1 | mount -t cifs //IP地址/共享文件夹名称 /mnt/backup -o username=SMB账号名,password=SMB密码,uid=your_user_id,gid=your_group_id |
查看挂载后的目录列表(可以看到有原来东西就说明没问题了)
1 | ls /mnt/backup |
备份磁盘为镜像
使用dd命令将磁盘备份为一个 img 镜像文件
列出块设备(包括磁盘)的信息,输入下面命令:
1 | lsblk |
sda 是直通需要备份的硬盘
将 sda 磁盘的内容,备份到 backup 目录的 emmc.img 文件中
1 | dd if=/dev/sda of=/mnt/backup/emmc.img bs=4M status=progress |
查看挂载后的目录列表,可以看到生成的 emmc.img
1 | ls /mnt/backup |
TIP:
可以通过计算 md5 校验值确保文件完整性,过程要比较久
计算要备份的磁盘的 md5
1 | md5sum /dev/sda |
计算镜像的 md5
1 | md5sum /mnt/backup/emmc.img |