如何访问磁盘映像上的所有文件?

如何访问磁盘映像上的所有文件?

为了备份远程服务器,我在本地计算机上运行了以下命令:ssh user@remote "dd if=/dev/vda | gzip -1 -" | dd of=image.gz

然后我解压image.gz并尝试通过双击它(即通过 DiskImageMounter.app)来安装它,以确保所有内容都在那里。

解压后的镜像文件大小差不多(服务器有50GB磁盘),但是当我挂载镜像时,我在文件资源管理器中看到的只是一个“UEFI”目录,该目录比服务器的磁盘小得多并且不包含例如服务器的主目录。

这是我从 MacOS 中的磁盘实用程序获得的信息(我假设我想要的是“disk10s1”,但到目前为止我只能访问“UEFI”。):

磁盘实用程序图形用户界面

答案1

然后我解压 image.gz 并尝试通过双击它(即通过 DiskImageMounter.app)来安装它,以确保所有内容都在那里。

您拥有的是全磁盘备份。你没有,但是如果你在 rw 安装时采取这一点/dev/vda,它至少会稍微损坏;如果image.gz也驻留在 上,它可能会严重损坏/dev/vda,因为您在备份过程中会大量修改文件系统。

这意味着它不仅包含包含数据的文件系统,而且还以分区表开头,并且似乎包含 UEFI 启动分区。

双击后,您的 DiskImageMounter 似乎至少可以识别该分区;那挺好的。

其他人可能会也可能不会被认出;您的操作系统可能根本没有相应的文件系统驱动程序。

我想说:如果您想访问该映像上的数据,只需在本地使用该磁盘启动虚拟机即可。

如果您想要更有用的备份,我建议您只需备份文件,不是原始磁盘映像(除非您真的只想复制整个虚拟机)。文件系统上除了文件及其属性之外没有任何内容,因此仅备份文件就不会丢失任何内容。

这可以非常简单地通过直接使用来实现

ssh user@remote tar cpf - --xattrs --acls --zstd / > backup.tar.zst

它将tar在目标系统上运行以归档所有文件,使用zstd(需要安装在远程系统上)即时压缩它,p保留所有文件属性,xattrs并将acls结果通过管道传输ssh到本地计算机,本地计算机直接写入它到本地文件backup.tar.zst

mksquashfs您还可以使用(需要安装)将远程上所有文件的较小存档保存在远程本身的文件中(不包括备份本身),以供以后下载:

mksquashfs / backup-$(date --utc -Ihours).squashfs -wildcards -exclude '... backup-*.squashfs' -comp zstd

这里的优雅之处在于,可以轻松排除备份本身中包含的任何备份文件,并且mksquashfs通过良好压缩本质上节省了大量空间,并且仅存储相同文件的内容一次。

另一个优雅的方面是这些squashfs档案可以直接挂载(至少在Linux上)——无需解压。在MacOS上,你可以安装squashfs-tools解压,我思考(从未尝试过),您可以macFUSE与 一起使用squashfuse来安装它们。玩得开心!

相关内容