运行Debian系统的系统映像?


22

是否可以将正在运行的Debian系统备份到某种映像文件,如果原始(备份)Debian系统发生故障,可以使用dd将其简单地写回到另一个硬盘上?

我特别想寻找一个可直接在存储库中使用的工具,因为我在树莓派上运行了Debian Wheezy,因此,我需要对ARM体系结构的支持,这对Debian存储库的软件包来说是相当可靠的。


2
我不建议尝试从rw安装的文件系统中获取块对块的副本。最小的写入可能会破坏它,并且您认为自己有一个可行的备份。因此mount -o remount,ro,如果您选择或类似名称dd,则要复制的驱动器dump。使用rsync或任何其他方法复制文件系统cp对于实时系统是安全的。
WhimsicalWombat 2015年

Answers:


15

dd如果您不介意生成与原始磁盘大小完全相同的映像文件,那就很好了。rsync如果您想要轻松的文件级访问,则很好。但是,备份文件系统的标准方法是dumpand restoreaptitude install dump)。

对于像Raspberry Pi这样的设备,我将进行以下备份,假设是MS-DOS分区表,并且磁盘是/ dev / sda:

  • dd if=/dev/sda of=sda-boot-sectors.img count=2048 获取磁盘启动部分的映像。
  • fdisk -lu /dev/sda >sda-partition-table.txt 供以后参考。
  • dump -0af sda1-root-level0.dump /dev/sda1 并对每个要备份的分区重复上述操作。

然后,您可以压缩很多并将其放在安全的地方。要进行还原,您将用于dd还原分区表和引导扇区,重新加载分区表,制作新的文件系统,然后使用cd /mnt/new-filesystem; restore -rf /some-location/sda1-root-level0.dump

优点:

  • dump 获取文件系统的完整副本,包括ACL,扩展属性,所有权,稀疏文件,特殊文件系统属性-所有内容均按原样转储。
  • 它只会复制您需要的块,而忽略未使用的块。
  • 它是标准的UNIX工具,可被许多其他UNIX工具读取。

缺点:

  • 如果在转储期间写入文件系统,它将生成损坏的快照
  • 挂载备份的映像(可以使用磁盘映像)或单个文件(可以通过rsync备份获取)更加困难。
  • 它是特定于文件系统类型的。您可以转储一个ext3文件系统并将其还原到一个文件系统中ext4,但是您可以转储任何类型的文件系统。大多数成熟的文件系统都有其自己的dump版本。标准的Debian可以dump做到ext2ext3并且ext4。如果使用特定于Flash的文件系统,则选项可能会有所不同。

手册页中没有说明dump不应写入文件系统。我的意思是,这听起来像是一个明智的限制,但可惜的是它没有在手册页中提到,所以有人可能会

感谢您的帖子,我已经了解了此工具(转储/还原)。我将使用它来制作具有以下内容的文件系统副本:mkfs.ext4 /dev/sda1; mount /dev/sda1 /mnt/disk; cd /mnt/disk; dump -0af - /dev/sda5 | restore -rf -
imz – Ivan Zakharyaschev

5

使用dd的引导扇区,并rsync -aHS为这些文件。您必须排除“虚拟”文件系统,例如/ proc / sys和任何RAM磁盘(tmpfs)。

如果还要保留分区,则可以使用进行转储sfdisk或使用进行重新创建parted


谢谢,听起来很有趣,您过去是否曾尝试过此操作?如何仅使用Loopkack设备从这些部分中创建完整的图像?(是的,想要保留分区等等。想要将映像准备好写入新的SD卡/磁盘,而无需进一步摆弄)
stefan.at.wpf 2012年

@ stefan.at.wpf我只是混合了一些解决方案,用于克隆VM,创建物理服务器(autoyast / kistart),从非镜像系统中创建raid1-mirror以及复制(静态)部分虚拟机的常用方法。集群节点的文件系统。我不使用这个myselv。我的方法是自动安装新服务器(包括备份客户端),然后通过备份将旧服务器的内容还原到新服务器。
尼尔斯2012年

4

对于Debian,您实际上只需要备份数据配置文件

备份现有状态:

  • 使用备份软件包选择dpkg --get-selections > dpkg_selections
  • 使用备份debconf数据库sudo debconf-get-selections > debconf_selections

要将其应用于新系统:

  • 首先使用来应用debconf选择sudo debconf-set-selections < debconf_selections
  • 使用来应用软件包选择dpkg --set-selections < dpkg_selections
  • 使用安装软件包apt-get dselect-upgrade

您的数据应主要位于/home/var(例如,/var/lib/mysql对于MySQL,/var/www对于Apache等)。您应该能够确定哪些应用程序对您很重要。

配置将主要在中/etc。再次强调,选择对您重要的不难。


开始debconf-get-selection跑步apt-get install debconf-utils
pandita

1

我不知道这在系统运行时是否很好,但这就是我的工作。

sudo dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M

如我所说,也许有更好的解决方案,在这种情况下,我也想知道!


1

我已经尝试了太多的备份和还原软件,但从没有过。现在,我要做的是:在备用计算机(相同的MB,NIC卡等)上安装了第二个Debian。每天晚上,我都会从A机同步到B机。由于我不想两个运行中的系统发生冲突,因此我会保留一些文件(/ etc / network / interfaces,/ etc / hosts,/ etc / hostname)。实际上,我确实在另一个文件夹中有它们的副本。我还禁用了一些我不需要在计算机B上运行的服务(后缀,mysql等)。我在计算机B上编写了一个脚本,该脚本基本上会将其转换为计算机A(替换我保留的文件),重新启动NIC并启用已禁用的服务。当然,当我运行脚本时,机器A需要关闭,否则会造成严重破坏。我每月通过关闭机器A并运行脚本来测试机器B,并进行一些测试以确保它是最新的并且可以正常运行。它就像一个魅力!



0

要备份我的pi,请取出microSD卡,然后将其插入笔记本电脑。然后运行,dd以在笔记本电脑上生成整个磁盘的文件,如上所述:

dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M

2
这实际上是在忽略问题的最重要部分。问题是询问如何制作系统的实时映像,并且在移动磁盘时最好关闭系统。
Sirens

0

使用systemback。即使使用debian Stretch,我也能正常工作。它为您提供了一个不错的实时启动USB,并带有您已配置的桌面。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.