我经常处理完整磁盘映像,我经常需要使用 USB-3 磁盘作为临时介质在功能不太强大的笔记本电脑上读取和写入完整磁盘映像。
复制原始图像可能是最快的方法,但我必须处理有限的可用存储空间。
我需要的是高吞吐量和低 CPU 使用率 - 压缩比对我来说并不那么重要。
我想要一个可以非常轻微地压缩创建的图像的工具 - 主要对磁盘上的空白空间进行编码,以便我只能存储有用的数据,同时使其尽可能快 - 希望几乎与原始复制一样快dd
。
我选择了 use pxz -1
,因为它可以使用多个 CPU 核心来加速压缩,希望最快的压缩仍然有用。然而,这似乎并没有我想要的那么胖。
压缩 500 GB 磁盘映像预计需要 21 小时:
mint Backup # dd if=/dev/sda bs=100M | pv -ptera -s500G | pxz -1 > Lenovo-Win8-sda.dd.xz
0:09:21 [9.26MiB/s] [6.54MiB/s] [> ] 0% ETA 21:34:46
完全不压缩预计需要 3 小时才能完成成像:
mint Backup # dd if=/dev/sda bs=100M | pv -ptera -s500G > Lenovo-Win8-sda.dd
0:00:20 [80.2MiB/s] [49.8MiB/s] [> ] 0% ETA 2:50:20
用于lbzip2 -1
压缩似乎比pxz -1
使用 15 小时的 ETA 稍快,但仍然很慢。
mint Backup # dd if=/dev/sda bs=100M | pv -ptera -s500G | lbzip2 -1 > Lenovo-Win8-sda.dd.bz2
0:00:22 [9.07MiB/s] [9.76MiB/s] [> ] 0% ETA 14:33:38
Linux 有没有更快的压缩工具?
答案1
LZ4
apt install liblz4-tool
然后就可以用lz4
命令压缩,用 解压了lz4 -d
。
它默认为最快的压缩模式。
通过 USB 3.0 从内部硬盘驱动器到外部驱动器的 500 GB 数据估计需要 2 到 3 小时:
mint Backup # dd if=/dev/sda bs=100M | pv -ptera -s500G | lz4 > Lenovo-Win8-sda.dd.lz4
0:02:47 [97.5MiB/s] [58.1MiB/s] [> ] 1% ETA 2:24:11
答案2
因此,这不会是绝对最快的(它比 LZ4、LZOP 和 Snappy 慢),但对于您的使用来说可能足够快,并且会得到方式比 LZ4 更好的比率(传输更少的数据也会节省您的时间)。
Z标准
官方网站:https://facebook.github.io/zstd/
Debian 软件包称为zstd
与 LZ4 不同,它是多线程的(用于压缩和解压缩),并且在最低压缩设置的情况下,它可以轻松地使 USB 3.0 链路饱和(您对 LZ4 的测试可能已经这样做了),同时获得与默认值相同的压缩率Gzip 中的设置。
答案3
答案4
我用克隆属它可以创建整个驱动器的克隆副本或压缩映像,包括带有 BIOS 模式引导扇区、分区表等的驱动器头部。
Clonezilla 映像是一个包含许多文件的目录,其中大文件被压缩,Clonezilla 可以从此类映像恢复到大小完全相同或更大的驱动器(但不能恢复到较小的驱动器)。这样的驱动器的行为与原始驱动器类似(可引导等)。如果驱动器更大,并且分区表是GPT,您可能需要手动恢复驱动器尾部的备份分区表gdisk
如果驱动器较大,并且分区表是 GPT,您可能必须使用或使用脚本GPT 修复。
Clonezilla 足够聪明,可以识别已用块并跳过文件系统中的空闲块(我已经将它与几个 linux 文件系统和 Microsoft 文件系统一起使用,它使用了partclone
),因此如果有相当比例的空闲块,那么它会很多比“原始”克隆和压缩更快(有或没有清零可用空间)。
当我想要高压缩和非常灵活的使用而不需要最终用户 Clonezilla 时,我将可用空间清零并dd
通过管道xz
来获取img.xz
文件。但这个过程非常缓慢,并且不适合您的情况。