Debian dd命令详解(磁盘备份与恢复完整教程)
什么是dd命令?
准备工作
确认目标磁盘或分区(避免覆盖重要数据)
备份重要文件到其他位置
以root权限或使用sudo执行命令
一、使用dd命令进行磁盘备份
if=:输入文件(源设备,这里是整个sda硬盘)of=:输出文件(目标镜像文件路径)bs=64K:块大小设为64KB,可提升效率(也可用4M、16M等)conv=noerror,sync:遇到错误不停止,并用空字节填充坏块status=progress:实时显示复制进度(Debian 8+ 支持)
二、使用dd命令恢复磁盘
⚠️ 警告:恢复操作会 完全覆盖目标磁盘!请再次确认 of= 指向的是正确的设备。三、常见应用场景
分区备份:如
if=/dev/sda1制作启动U盘:将ISO镜像写入U盘(
of=/dev/sdb)系统克隆:直接从一块硬盘复制到另一块(
dd if=/dev/sda of=/dev/sdb)
四、注意事项与技巧
使用
lsblk或fdisk -l确认设备名称大容量磁盘备份耗时较长,请耐心等待
可配合
gzip压缩镜像:恢复压缩镜像:
总结
tar进行全系统打包、使用rsync同步关键目录、或使用自动化工具(如`amanda`或`afbackup`)。对于关键配置,系统会自动将dpkg数据库和用户密码文件保存在/var/backups中。建议利用crontab设置定时任务,将备份数据存储到外部目录。 rsync 是一种高效的增量备份工具,适合在不停机的情况下备份整个系统或关键目录。-a:归档模式,保留符号链接、权限、时间等。-A:保留ACL。-X:保留扩展属性。-v:显示详细信息。
使用tar命令将系统文件打包,可以将整个根目录打包为一个.tar.gz文件。
crontab中以实现每日自动备份。 /var/backups中,包括:dpkg 数据库:保存最后七个快照。
用户与组数据库:
/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow。
备份位置:始终将备份存储在外部存储设备、网络存储或远程服务器上,避免备份文件与系统位于同一物理硬盘。
验证备份:定期检查备份文件是否可以成功恢复。
恢复:在恢复系统之前,确保拥有可启动的Debian安装介质或Live USB。
Debian11 系统备份与灾备盘制作
Ubuntu从20.04升级到22.04后,系统使用snap管理包,虽然可以卸载掉,但是特别不喜欢,所以又切换回了Debian 11。
期间是无聊的软件包的安装以及配置文件的迁移,好在差别不大,迁移比较顺利。
迁移完成后,制作系统备份与灾备盘。这样当原服务器意外挂掉后,使用虚拟机或另外一台裸机直接挂上灾备盘,立即顶上。
备份与灾备盘制作:
1. 挂载硬盘到/mnt目录下
$ sudo mount /dev/sdd1 /mnt/
2. 执行全量同步
sudo rsync -av --progress \--exclude=/proc/ \--exclude=/lost+found/ \--exclude=/media/ \--exclude=/mnt/ \--exclude=/sys/ \--exclude=/tmp/ \--exclude=/swapfile \--delete / /mnt/
一切皆文件,至此,系统备份完成,接下来把该盘制作为启动盘。
3. 安装grub引导,制作应急灾备盘
拿着灾备盘,来到另外一台电脑上(或虚拟机上), 从启动盘启动进入到急救模式(高级选项 -> Rescue mode),一步步的来到选择root file system 位置。选择已同步的灾备盘,然后回车。
此时进入到备份盘上的系统,然后执行:
$ grub-install /dev/sdX.... 略.... $ update-grub
等待命令执行完成,此时灾备盘已经可以引导启动了。
但是由于 /etc/fstab 一般会用UUID的方式来设置根路径,所以还需要修改 /etc/fstab 里的根路径。因为是灾备盘,所以建议写死为 /dev/sda,如下:
# UUID=3b82a5d2-d2f9-4797-b4e8-0bc8b2d3642e / ext4 defaults 0 1 # 应急灾备时,建议改为 /dev/sda / ext4 defaults 0 1
4. 验证
使用虚拟机或另外一台裸机,单独直接挂上这块盘。
启动系统,检查系统上运行的服务是否正常。
注:
1. CPU为同一系列。无独立的其他需要专用驱动的设备(或不一致的特殊外围硬件),服务器一般没有。
2. 远程热备核心与本文步骤基本一致。
3. 虚拟机顶上服务时,注意网卡选择桥接模式。
4. 直接在一台机器上实现安装grub稍微复杂些,可参考我的这篇文章 ubuntu 更改boot分区格式,重建引导。
tar进行打包备份,最常用的命令是tar -czvp -f 备份文件名.tar.gz /要备份的目录 --exclude=排除目录。该命令结合了gzip压缩(-z)、创建档案(-c)、详细信息(-v)、保留权限(-p)以及排除特定目录,适合全系统或特定目录备份。 备份文件夹(推荐 gzip 压缩):
-c: 创建新档案。-z: 通过 gzip 压缩。-v: 显示详细过程。-p: 保留原有权限和属性。-f: 指定备份文件名。排除特定目录备份:
--exclude: 用于跳过如/proc,/sys,/mnt等动态文件系统,避免错误。
-x: 解压文件。-C: 指定解压到的目录。
权限: 备份系统文件时需要使用
sudo。压缩格式:
*.tar.gz(gzip, 速度快) 或*.tar.xz(压缩率高, 慢)。注意事项: 备份根目录
/时务必排除/proc,/sys,/dev,/tmp和备份文件本身所在的目录。
