首先这个问题是不是重复项:
https://superuser.com/questions/7739/windows-backup-by-imaging
我以前广泛使用过 Norton Ghost(实际上在 Norton 购买它之前我就已经在使用 Ghost 了),我喜欢它的一个特点是它可以压缩 Windows 分区,这样你就可以拍摄相对较小的 Windows 系统快照/图像。
我在 Windows 95/98/ME、XP 和 2000 时代做过很多映像。但如今我倾向于只在虚拟机中运行 Windows(主要是在 KVM 下)。这些虚拟 Windows,我可以毫无问题地进行映像,然后复制/删除/编辑/等这些映像。
但我现在的需求不同了,这是真正的超级用户的问题:我想要想象并压缩,来自 Linux 启动 CD,Windows 计算机的 Windows NTFS 分区。
我不介意为自己创建带有所需应用程序的 Linux 启动 CD...但是那会是哪个应用程序以及我该如何使用它?
答案1
有几种方法可以拍摄分区图像,包括绝对基本的cat
和dd
。它们的优点是几乎默认存在到处在类 unix 世界中,两者都可以通过 gzip 或类似方式传递,如下所示:
cat /dev/sda1 | gzip -c > /some/directory/sda1.img.gz
甚至是整个磁盘:
cat /dev/sda | gzip -c > /some/directory/sda.img.gz
这些选项与文件系统无关,因此不会忽略未使用的块(可能仍包含旧数据),因此为了提高压缩率,在某些情况下,可以使用删除Windows 中的实用程序将所有分区的可用空间清零,如下所示:
sdelete -v c:
或者,如果您非常信任 Linux NFTS 设置,您可以挂载分区并运行cat /dev/zero > /mnt/ntfs/zero.file ; rm zero.file
(我更愿意保持警惕,因为 NTFS 格式没有完全公开记录,所以可能会有它不知道它不能很好处理的事情)。
您可以cat
像这样从上面的示例中删除:
gzip -c < /dev/sda1 > /some/directory/sda1.img.gz
并且它的 CPU 效率会更高一些,但我怀疑效率差异是否会很显著,除非你有一个非常低功耗的处理器,而且我更喜欢使用该方法,因为cat
命令从左到右“流动”得更好。
您也可以cat
用pv
(替换管道查看器) 如果您已经安装了它,那么可以获得可能很长的操作的有用进度显示。
答案2
您可以使用ntfs克隆,这是一款专为此目的而设计的 Linux 工具。您可以通过将连字符传递给开关将输出直接传送到 stdout -o
。
例如,如果你想要使用/dev/sda1
gzip 压缩的图像,你可以使用这个命令:
ntfsclone -s -o - /dev/sda1 | gzip -c > /output/location.img.gz
如果你想要更多的压缩并且有时间,我建议使用西泽方法改为:
ntfsclone -s -o - /dev/sda1 | xz -cv > /output/location.img.xz
这两者都将对您的 NTFS 分区进行映像和压缩,同时忽略未使用的磁盘空间。
干杯!
编辑:ntfs克隆如果默认情况下不包含该实用程序,则可以使用其包管理器轻松安装在大多数支持网络的发行版上。如果您在特定发行版的软件管理器中找不到该实用程序,则它可能是ntfsprogs或者ntfs-3g实用程序。您还可以参考此链接以获取更多克隆信息。
答案3
我建议平(Partimage 不是鬼魂)。
它是一个实时的 Linux ISO,它允许您使用 gzip 或 bzip2 压缩分区。
答案4
你应该看看克隆兹拉。我知道它允许将磁盘映像存档,并且我怀疑通过一些调整您也可以使它压缩它们。
clonezilla Live CD 将引导您完成映像过程,并在完成后为您提供命令行。您应该能够使用它并修改启动脚本以将其构建到您需要的工具中。