阿泉的博客

记录生活点滴

Debian系统备份 dd命令和rsync命令 tar打包


Debian dd命令详解(磁盘备份与恢复完整教程)

什么是dd命令?

dd(Data Duplicator)是Unix/Linux系统中的一个底层数据复制工具,它可以直接读写设备文件(如硬盘、U盘等),常用于创建磁盘镜像、克隆系统、恢复数据等任务。由于其直接操作硬件设备,使用时需格外小心,避免误操作导致数据丢失。



准备工作

在执行任何磁盘操作前,请务必:

  • 确认目标磁盘或分区(避免覆盖重要数据)

  • 备份重要文件到其他位置

  • 以root权限或使用sudo执行命令

一、使用dd命令进行磁盘备份

假设我们要将整个系统盘 /dev/sda 备份为一个镜像文件 backup.img,保存到外接硬盘 /mnt/backup/ 中。

sudo dd if=/dev/sda of=/mnt/backup/backup.img bs=64K conv=noerror,sync status=progress

参数说明:

  • if=:输入文件(源设备,这里是整个sda硬盘)

  • of=:输出文件(目标镜像文件路径)

  • bs=64K:块大小设为64KB,可提升效率(也可用4M、16M等)

  • conv=noerror,sync:遇到错误不停止,并用空字节填充坏块

  • status=progress:实时显示复制进度(Debian 8+ 支持)

二、使用dd命令恢复磁盘

当系统崩溃或需要还原时,可将之前备份的镜像文件写回磁盘:

sudo dd if=/mnt/backup/backup.img of=/dev/sda bs=64K conv=noerror,sync status=progress
⚠️ 警告:恢复操作会 完全覆盖目标磁盘!请再次确认  of= 指向的是正确的设备。

三、常见应用场景

除了整盘备份,dd还可用于:

  • 分区备份:如 if=/dev/sda1

  • 制作启动U盘:将ISO镜像写入U盘(of=/dev/sdb

  • 系统克隆:直接从一块硬盘复制到另一块(dd if=/dev/sda of=/dev/sdb

四、注意事项与技巧

  • 使用 lsblk 或 fdisk -l 确认设备名称

  • 大容量磁盘备份耗时较长,请耐心等待

  • 可配合 gzip 压缩镜像:

    sudo dd if=/dev/sda bs=64K | gzip > /mnt/backup/backup.img.gz
  • 恢复压缩镜像:

    gunzip -c /mnt/backup/backup.img.gz | sudo dd of=/dev/sda bs=64K status=progress

总结

通过本教程,你已经掌握了在Debian系统中使用dd命令进行安全高效的磁盘备份磁盘恢复。无论是日常维护还是灾难恢复,这项技能都至关重要。记住:操作前仔细核对设备路径,备份永远不嫌多!









Debian系统备份可以通过多种方式实现,常见的方法包括使用tar进行全系统打包、使用rsync同步关键目录、或使用自动化工具(如`amanda`或`afbackup`)。对于关键配置,系统会自动将dpkg数据库和用户密码文件保存在/var/backups中。建议利用crontab设置定时任务,将备份数据存储到外部目录。 
以下是Debian系统备份的几种主要方法:
rsync 是一种高效的增量备份工具,适合在不停机的情况下备份整个系统或关键目录。
bash
# 备份系统根目录到外部挂载点 
/mnt/backupsudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/backup/
  • -a:归档模式,保留符号链接、权限、时间等。

  • -A:保留ACL。

  • -X:保留扩展属性。

  • -v:显示详细信息。

使用tar命令将系统文件打包,可以将整个根目录打包为一个.tar.gz文件。

bash
# 将整个系统备份到 
backup.tar.gzsudo tar -cvpzf /backup.tar.gz --exclude=/backup.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/dev --exclude=/run /
可以编写一个简单的备份脚本,并将其添加到crontab中以实现每日自动备份。 
bash
# 编辑定时任务crontab -e# 在每天凌晨2点执行备份脚本0 2 * * * /path/to/your/backup_script.sh
Debian系统会自动维护一些重要配置在/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 位置。选择已同步的灾备盘,然后回车。

47f85bf6979c42cd85637194e8a60bcf.png

此时进入到备份盘上的系统,然后执行:

$ 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分区格式,重建引导

 





在Debian系统中使用tar进行打包备份,最常用的命令是tar -czvp -f 备份文件名.tar.gz /要备份的目录 --exclude=排除目录该命令结合了gzip压缩(-z)、创建档案(-c)、详细信息(-v)、保留权限(-p)以及排除特定目录,适合全系统或特定目录备份 
核心备份命令:
  • 备份文件夹(推荐 gzip 压缩):

    bash
    tar -czvp -f /path/to/backup.tar.gz /source/folder
    • -c: 创建新档案。

    • -z: 通过 gzip 压缩。

    • -v: 显示详细过程。

    • -p: 保留原有权限和属性。

    • -f: 指定备份文件名。

  • 排除特定目录备份:

    bash
    tar -czvp -f /backup.tar.gz --exclude=/mnt --exclude=/proc --exclude=/sys /
    • --exclude: 用于跳过如 /proc/sys/mnt 等动态文件系统,避免错误。 

常用解压命令:
bash
tar -xzvpf /path/to/backup.tar.gz -C /target/directory
  • -x: 解压文件。

  • -C: 指定解压到的目录。

关键提示:
  • 权限: 备份系统文件时需要使用 sudo

  • 压缩格式: *.tar.gz (gzip, 速度快) 或 *.tar.xz (压缩率高, 慢)。

  • 注意事项: 备份根目录 / 时务必排除 /proc/sys/dev/tmp 和备份文件本身所在的目录。 


Powered By Z-BlogPHP 1.7.4