如何创建分区 (ext4) 的映像并随后挂载它来浏览/恢复文件?

如何创建分区 (ext4) 的映像并随后挂载它来浏览/恢复文件?

我想备份当前的 Debian 9 服务器操作系统分区,以便可以安装干净版本的 Debian 10。

但是,安装 Debian 10 后,我想挂载我的旧操作系统映像,以便我可以根据需要浏览和恢复文件。

我想我会使用 CloneZilla,但显然你不能直接安装它创建的图像?

答案1

e2image可用于创建 ext4 文件系统的映像,同时仅复制正在使用的扇区:

e2image -ra /dev/sda1 /path/to/file.img

file.img将被创建为稀疏文件,因此它只会占用文件系统中实际使用的空间,尽管其表观大小将反映文件系统的容量。它可以像任何文件系统映像一样直接安装:

mount /path/to/file.img /path/to/mountpoint

您还可以使用e2image来生成 QCOW2 图像:

e2image -Qa /dev/sda1 /path/to/file.qcow2

这将生成一个仍然可以安装的紧凑文件,使用qemu-nbd

qemu-nbd --connect=/dev/nbd0 /path/to/file.qcow2
mount /dev/nbd0 /path/to/mountpoint

两个映像都可以被压缩,尽管这会导致文件无法直接安装。

答案2

作为 root,只需将cat分区转移到另一个分区:cat /dev/sdXn > /dev/sdYi

或到一个文件: cat /dev/sdXn > backup.img

或者到另一台机器上的文件或分区:cat /dev/sdXn | ssh user@host 'cat > backup.img'

您可以使用dd代替cat,但没有充分的理由这样做:

dd if=/dev/sdXn of=backup.img

或者,如果您在复制时想要一个进度条和/或控制复制期间使用的缓冲量,您可以使用pv

pv /dev/sdXn > backup.img

如果分区有读取错误,您可能需要使用以下命令ddrescue来代替cat

ddrescue /dev/sdXn /dev/sdYi

或者

ddrescue /dev/sdXn backup.img

ddrescue不会写入标准输出(或从标准输入读取),因此如果您希望backup.img在另一台机器上使用它,则必须scp随后复制它(例如使用 ),或将其写入 NFS 挂载。

或者,正如 user1133275 在评论中提到的,您可以使用流程替代:

ddrescue /dev/sdXn >(ssh user@host 'cat > backup.img')

最后,如果您想要一个压缩的、可安装的文件系统,您可以使用qemu-img

qemu-img convert -c -O qcow2 /dev/sdXn backup.qcow2

安装它:

qemu-nbd --connect=/dev/nbd0 /path/to/backup.qcow2
mount /dev/nbd0 /mnt

和 都qemu-imgqemu-nbd包装中qemu-utils。顺便说一句,如果您拍摄了整个磁盘而不仅仅是一个分区的映像,则可以将旧系统作为新系统中的虚拟机运行。


另一种选择是安装第二个磁盘并在其上安装 Debian 10。然后您可以将旧驱动器安装在新系统上的某个位置。或者甚至在 Debian 9 和 Debian 10 之间进行双引导。


就我个人而言,我建议使用文件副本(例如使用tarrsync或什至cp -a)而不是图像备份。它更有用,可以轻松提取到您想要的任何地方,并且不会浪费空间或时间复制空或未使用的扇区。

映像备份(几乎总是)是备份文件系统的最糟糕方法。

答案3

将 ext4 分区安装为/whatever

mkisofs -o    /somehwere_else/whatever.iso    /whatever

现在你有一个无论多大无论如何.iso。显然,您必须注意将其移动到的位置的磁盘空间。

要访问该 iso,您只需执行以下操作

mount -o loop /somewhere/whatever.iso   /anywhereyoulike/mywhateveriso/

现在您的文件夹下的所有内容/whatever都可以访问只读在下面/anywhwereyoulike/mywhateveriso/

事实上,你有一个ext4分区几乎是无关紧要的,因为你将把这些数据转储到一个容器这将在一个不同的文件系统格式。因此,无论是 ext4、xfs 还是 btrfs 分区中的数据并不重要,因为此时您已经有了 Linux 内核文件系统支持来访问它。

一旦您通过以下方式将数据放入该 iso 容器中MKISOF这是非常通用的,现在几乎可以从任何地方访问数据,因为 isofs 是通用的......如果您的计算机可以读取 cd/dvd [iso9660/udf],那么您将能够访问您的whatever.iso。制作 .iso 将使其非常便携。

使用cattardd将保留可能有问题的文件系统

相关内容