是否可以将正在运行的 Debian 系统备份到某种映像文件,以便在原始(备份的)Debian 系统出现故障时可以使用 dd 简单地写回另一个硬盘?
我特别寻找在存储库中直接可用的工具,因为我在树莓派上运行 Debian Wheezy,因此,我需要对 ARM 架构的支持,这对于 Debian 存储库的软件包来说是非常可靠的。
答案1
dd
如果您不介意生成与原始磁盘大小完全相同的图像文件,那就很好。rsync
如果您想要轻松的文件级访问,这是很好的选择。但备份文件系统的标准方法是dump
和restore
( aptitude 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
版本。标准 Debiandump
具有ext2
、ext3
和ext4
。如果您使用特定于 Flash 的文件系统,您的选项可能会有所不同。
答案2
为了德班,你真的只需要备份你的数据和配置文件。
备份现有状态:
- 使用 备份包选择
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
.再说一遍,找出对您来说重要的事情应该不难。
答案3
用于dd
引导扇区和rsync -aHS
文件。您必须排除“虚拟”文件系统,例如 /proc /sys 和任何 RAM 磁盘 (tmpfs)。
如果您还想保留分区,可以使用 转储它sfdisk
或使用 重新创建它parted
。
答案4
我不知道当系统运行时这样做是否好,但这就是我所做的。
sudo dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M
正如我所说,也许有更好的解决方案,那么我也想知道!