GUI程序创建的分区备份映像不大于其文件?


8

我喜欢“磁盘”(gnome-disk-utility)及其创建系统分区备份的功能。

在此处输入图片说明

但是在某个时候,我在互联网上读到了一个程序,该程序可以创建这样的图像:它不像整个分区那样大,而只能像它上的文件一样大。现在我找不到了。

有这样的工具吗?


3
CloneZilla,也许吗?
muru 2015年

1
如我所见,clonezilla只能作为实时会话运行。我已进行编辑以指定我在寻找可以从操作系统安装并运行的程序,我使用的是多个ubuntus,并且我更喜欢此解决方案

Answers:


9

以下答案使用TUI而不是GUI解决方案:

根据您的用例(我使用它来进行系统备份),可以使用CloneZilla Live。它可以创建:

  • 稀疏图片
  • 压缩的图像:
    • 整个系统
    • 整个驱动器
    • 只是单个分区。

主要优点是:

  • 它的启动来源:
  • 带有自己的操作系统(基于Ubuntu)
  • 它可以使精确的冷系统备份轻松恢复。

除了这些优点之外,它还可以复制MBR。

如果不是您想要的冷系统备份,您仍然可以使用CloneZilla所基于的技术,那就是partclone


1
我已进行编辑以指定我在寻找可以从操作系统安装和运行的GUI程序,我使用的是多个ubuntus,并且我更喜欢这种解决方案

如何安装pyclonezilla?没有一个Google条目针对此问题

1
我太快指出GUI了:它不起作用。仅CLI!在留下您已阅读的注释后,我将删除答案。
Fabby 2015年

1
由于没有程序,因此似乎要满足这两个条件:1)具有类似“磁盘”的GUI;2)创建与所用空间一样大的磁盘映像,删除答案没有任何意义。通常,此处会提供GUI问题的CLI答案,并且通常会被接受,这是有充分理由的。我只是在努力追求自己想要的。

1
:DI需要备份,然后缩小... ;-)
Fabby,2015年

4

实现较小的磁盘映像通常是通过不从映像中的初始文件系统复制零出块的方式完成的。这个概念被称为稀疏空间中的文件或puching在文件中的孔,并在主机的文件系统来支持它。一点命令行,但是试试这个:

sudo apt-get install virt-manager qemu-utils 

然后安装后,您可以使用:

qemu-img convert -f raw -O raw  /dev/sdX /home/<user>/Ubuntu.img

这将创建磁盘的稀疏映像(未写入文件中的零)。其中-f =格式,-O输出格式。sdX磁盘(也可以使用分区)。该程序具有高级功能,例如快照和不同的输出格式(vdi,vmdk等)。你的地方,你保存图像必须支持稀疏文件,否则规模将是多么大,因为在分区零将被写入到磁盘中。要充分利用它,请在分区上运行诸如apt sfillzerofreeapt中找到的程序,因为可用空间并不总是意味着零空间,并且您想最大化文件系统上零空间的数量。

奖励忍者积分。由于linux将磁盘视为“文件”,因此您也可以使用普通cp,条件是将文件停放到的输出分区知道稀疏文件。

sudo cp --sparse=always /dev/sdX /home/<user>/Ubuntu.img

它将通过cp创建原始副本。

支持稀疏的文件系统示例:ext4,btrfs,xfs,ntfs(但是ntfs-3g可能不允许稀疏写入)。

不包含以下文件系统的示例:fat32。


我进行了编辑以指定我在寻找可以从操作系统安装并运行的GUI程序,我使用的是多个ubuntus,并且我更喜欢这种解决方案

恢复映像的命令是什么?

通常在服务器场中,我们没有太多的GUI选项,而是围绕所述命令构建脚本。这就是为什么命令行在Unix上通常更完整/更强大的原因。转换回是一样简单翻转参数.. sudo cp /home/<user>/Ubuntu.img /dev/sdX,或者如果你喜欢的DD, sudo dd if=/home/<user>/Ubuntu.img of=/dev/sdX。与qemu-img convert相同。如果您说,要在真实硬件上植入虚拟机。当回写时,它将零写入磁盘,因此您很稀疏,因为它需要正确地处理分区的几何形状。
user283885 2015年

1
我理解您的意思,很抱歉,我没有任何适合您需要的GUI工具。我只是觉得至少对您有用。
user283885 2015年

1
欢迎来到篱笆的这一侧。我之所以指出服务器场,是因为最近大多数开发都是如何完成的。例如,qemu-img是来自更大项目(openstack,由redhat,rackspace和nasa启动)的实用程序。您有这些大公司在构建适合其数据中心的软件,然后您又像我们一样背负着这种努力。当然可以,但是充其量是斯巴达式的。目前,我能做的最好的就是与他人分享专业知识。
user283885 2015年

4

由于似乎没有任何程序本身可以满足两个条件:

1)具有类似“磁盘”的GUI;

2)创建与所用空间一样大的磁盘映像,

我当时正在考虑一种相对简单的解决方法,但是其中涉及两个在Ubuntu中非常常见的GUI程序:

一个是用于创建给定分区的备份映像的相同 “磁盘”(gnome-disk-utility),第二个是Gparted,用于在创建其备份映像之前尽可能缩小分区,以及之后将其调整为原始大小

我发现这样的操作不会带来任何不便:将分区缩小到最小程度仅需几分钟(10GB大约需要一分钟),并且会在右侧创建一个空白空间。在使用“磁盘”制作磁盘的备份映像之后,使用Gparted可以将分区的大小重新调整为右侧,直到其初始状态为空,这仅需要几秒钟。

在安装了Ubuntu的分区上进行了测试:


1
由于我刚刚收到我的答案的支持,请阅读是否找到了完美的答案,这似乎就是答案!你为什么不接受这个?
Fabby

2

编辑:如果从文件系统中删除的文件仍然存在于分区中,则此方法将无法正常工作,因此首先必须擦除目标分区上的可用空间:

  1. 挂载目标分区
  2. dd if=/dev/zero of=<path_to_partition_volume>/file.dd && rm <path_to_partition_volume>/file.dd
  3. 卸载目标分区

然后:


您可以使用逐块读取整个分区,dd并将所有内容输出到诸如的压缩实用程序gzip。即使使用最快/最低的压缩设置,任何压缩工具都极有可能在此过程中压缩所有可用空间。

gzip

sudo dd if=/dev/sdX | GZIP=-1 gzip >/path/to/backup.gz

GZIP=-1临时设置环境变量GZIP-1实现最快/最低压缩)

要还原备份:

gzip -d /path/to/backup.gz >/dev/sdX


在使用磁盘备份之前,您如何看待使用gparted缩小分区?

@cipricus最好等待其他人对此发表评论,因为我不确定,甚至很难,我认为这样做也应该没问题
kos 2015年

@kos我发现您给出的ddrescue命令毫不费力地生成了一个映像,但是它根本没有减小文件的大小。我正在将NTFS分区映射到ext4,这两个分区似乎都适用于稀疏文件,但是Nautilus中显示的.img文件大小与原始分区大小完全匹配。因此,似乎仍然需要摆弄gParted?
PhilJ

1

ddrescue-S选项一起使用怎么样?

ddrescue -S /dev/sdXY /<path_to_backup>/backup.img

这将克隆每个块,但将块设备中找到的零个块克隆/dev/sdXY/<path_to_backup>/backup.img


听起来不错。但是恢复映像的命令是什么?

@cipricus我发现这实际上是高度依赖于系统的,并且不能在每个发行版上都起作用,因此我添加了一个更简单但也许稍微慢一点的方法来完成相同操作,而无需下载其他软件,这是我实际上的方法使用
kos

0

无法将其复制到较小的驱动器。当我有一个64 Gb驱动器时,只有10%的数据充满了。我希望能够将其复制到6 Gb映像文件中,然后可以将其复制到16 Gb驱动器中,然后将其扩展到16 Gb

我现在知道的唯一可能性是使用GParted缩小原始文件,然后复制原始文件,然后再调整它们的大小。这是非常冒险的操作,因为您需要缩小和调整原件大小。


0

您可以rsync用来仅将分区上的文件备份到另一个分区。或tar创建包含所有文件的压缩存档。

两者都可能具有(多个)GUI,但是我从来没有亲自使用过它们。


0

Clonezilla实际上可以非常友好。实时CD不需要任何命令行使用-即使它不使用鼠标,我也很高兴将其称为GUI-并且我认为在许多情况下默认设置都可以。问题是您没有明确指出的问题:它似乎没有设计为可以在任意Linux系统上安装的东西。它专门为Debian / Ubuntu打包,Live CD是运行它的最简单方法。


Clonezilla / partclone使用支持文件系统的克隆并使用自己的压缩映像格式。

还有另一种非GUI的可能性来生成简单的(可挂载的)稀疏文件,它不依赖于检测零扇区。

virt-sparsify /dev/your-block-device backup.img

如果/ tmp是ramdisk,它将警告它可能需要更多空间来存储临时文件。因此,您可能需要添加该选项--tmp /var/tmp


我发现virt-sparsify方法确实可以减小.img文件的大小,但是它需要一个非常大的/ tmp目录,大致等于要成像的分区的大小。它发出了警告消息,但是当我尝试上面显示的--tmp选项(因我的设置而异)时,它给了我>未知选项`--tmp'我现在不确定如何将/ tmp输出转移到其他地方对此的任何建议都将对我和本文的未来读者有所帮助。
PhilJ

指定virt-sparsify --version?该选项记录在我的(man virt-sparsify)上...我不能发誓我已经使用过它,但是至少我当前使用的/tmp是tmpfs。如果可以使用--in-place,它将避免临时存储。最后,您不妨尝试一下TMPDIR=/var/tmp virt-sparsify ...。我的版本的文档说,这就是您必须为1.28之前的版本设置tmp目录的方式。
sourcejedi
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.