🛬 使用dd命令备份硬盘镜像并压缩保存到指定目录
使用 dd 命令备份硬盘镜像并结合压缩工具(如 gzip、pigz 或 xz)可以大幅减少备份文件体积。以下是完整的操作指南,包括备份、压缩和存储到指定目录的步骤:
1. 准备工作
- 确认源硬盘和目标路径:
- 使用
lsblk或fdisk -l确认源硬盘设备(如/dev/sda)。 - 确保目标目录有足够空间(至少等于源硬盘已用空间,压缩后会变小)。
- 使用
- 卸载源硬盘(可选):
如果备份的是系统盘,建议从 Live CD/USB 启动,避免写入冲突。
2. 基本备份命令
(1)直接备份整个硬盘(未压缩)
sudo dd if=/dev/sdX of=/path/to/backup/disk.img bs=4M status=progress
if=/dev/sdX:源硬盘设备(如/dev/sda)。of=/path/to/backup/disk.img:备份镜像保存路径。bs=4M:块大小(提高读写效率)。status=progress:显示实时进度。
(2)备份分区(如 /dev/sda1)
sudo dd if=/dev/sdX1 of=/path/to/backup/partition.img bs=4M status=progress
3. 压缩备份
方法 1:使用 gzip(快速压缩)
sudo dd if=/dev/sdX bs=4M status=progress | gzip -c > /path/to/backup/disk.img.gz
- 解压命令:
gunzip -c /path/to/backup/disk.img.gz | sudo dd of=/dev/sdX bs=4M status=progress
方法 2:使用 pigz(多线程加速,推荐)
sudo dd if=/dev/sdX bs=4M status=progress | pigz -c > /path/to/backup/disk.img.gz
pigz是gzip的多线程版本,速度更快(需安装:sudo apt install pigz)。
方法 3:使用 xz(高压缩比,速度慢)
sudo dd if=/dev/sdX bs=4M status=progress | xz -z -T0 -c > /path/to/backup/disk.img.xz
-T0:使用所有CPU线程。- 解压命令:
xz -d -c /path/to/backup/disk.img.xz | sudo dd of=/dev/sdX bs=4M status=progress
4. 校验备份完整性
(1)校验原始设备和备份文件
sudo sha256sum /dev/sdX # 计算源设备的哈希
sha256sum /path/to/backup/disk.img.gz # 计算备份文件的哈希
确保两者哈希一致(解压后比对)。
(2)检查镜像内容(可选)
file /path/to/backup/disk.img.gz # 查看文件类型
gunzip -l /path/to/backup/disk.img.gz # 检查压缩文件信息
5. 恢复备份
(1)恢复整个硬盘
gunzip -c /path/to/backup/disk.img.gz | sudo dd of=/dev/sdX bs=4M status=progress
(2)恢复分区
gunzip -c /path/to/backup/partition.img.gz | sudo dd of=/dev/sdX1 bs=4M status=progress
6. 高级技巧
- 排除空数据(节省空间):
使用conv=sparse跳过空块:sudo dd if=/dev/sdX bs=4M conv=sparse status=progress | pigz -c > disk.img.gz - 备份到远程服务器:
通过ssh直接备份到远程主机:sudo dd if=/dev/sdX bs=4M status=progress | pigz -c | ssh user@host "cat > /remote/path/disk.img.gz"
注意事项
- 权限问题:所有命令需
sudo权限。 - 目标空间:压缩后大小取决于数据内容(文本/日志压缩率高,已压缩文件如视频压缩率低)。
- 中断恢复:如果备份中断,恢复时需从头开始。
总结
| 场景 | 命令示例 |
|---|---|
| 备份+压缩 | dd if=/dev/sdX | pigz -c > backup.img.gz |
| 恢复 | gunzip -c backup.img.gz | dd of=/dev/sdX |
| 高压缩比 | 替换 pigz 为 xz -z -T0 |
| 远程备份 | dd if=/dev/sdX | pigz -c | ssh user@host "cat > backup.img.gz" |
按需选择压缩工具和存储路径即可! 🔧