由于 bzip2 声称压缩效果最好(就大小而言),我决定使用它。工作服务器可以提供 24 个(虚拟)CPU(4 个真正的 X5650 @ 2.67GHz)- 因此我决定寻找并行变体。
使用debian stable
- 抱歉,但我在 askubuntu 中找到了最佳匹配 - 我决定仔细研究pbzip2
和lbzip2
。
但该选择什么?实际稳定版本pbzip2
是 版本1.1.1-1
和lbzip2
版本0.23-1
。这可能在外观上倾向于pbzip2
- 但lbzip2
据说它甚至在单核计算机上也更快。另一方面pbzip2
声称与 完全兼容bzip2 v1.0.2
。
此外,我有一些大型本地作业的计时值:
使用lbzip2
Command being timed: "tar -cjf /tmp/mapleTAsicherung.lbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
User time (seconds): 2134.32
System time (seconds): 39.24
Percent of CPU this job got: 2099%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:43.51
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1509088
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 1054467
Voluntary context switches: 153901
Involuntary context switches: 235285
Swaps: 0
File system inputs: 0
File system outputs: 3460632
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
使用pbzip2
Command being timed: "tar -cjf /tmp/mapleTAsicherung.pbzip2.tar /bin /etc /lib /lib32 /opt /sbin /selinux /usr"
User time (seconds): 3158.18
System time (seconds): 59.80
Percent of CPU this job got: 2095%
Elapsed (wall clock) time (h:mm:ss or m:ss): 2:33.56
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1436320
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 477683
Voluntary context switches: 151326
Involuntary context switches: 339246
Swaps: 0
File system inputs: 0
File system outputs: 3460536
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
应该使用什么?主要区别是什么?目前我倾向于lbzip2
。
答案1
这是评估它们的基本思路。
拿一个你通常使用的大型 tarball。使用 bzip2、pbzip2、lbzip2 压缩它。测量(挂钟)时间并将所有输出保存在不同的文件中。这将为您提供三个时间和三个文件大小。
然后遍历所有三个输出文件(即 bzip2、pbzip2、lbzip2 的压缩输出),并使用这三个实用程序(bzip2、pbzip2 和 lbzip2)对每个文件进行解压缩。这将为您带来进一步的九次。
在某个分析器下重新运行这 12 个测试,并获取每个测试的峰值内存使用率(虚拟和 RSS)。同样,这将产生 12 个值。(如果您的 Linux 配置为无过度使用,那么您对 VSZ 感兴趣。否则您关心 RSS)。
为这些数据点制作一个包含 12 行的表格 - col1:3 个压缩大小,col2:3 个压缩时间/9 个解压时间,col3:12 个峰值 mems - 并选择最适合您的。您应该考虑压缩频率与解压频率。
我使用 lbzip2-0.23,但是我编写了它,所以它不算数。
最后,无论哪一个对你来说是最好的,总是保存校验和未压缩tarball,并在宣布备份“完成”之前验证您保存的文件。
FILES=...
OUTDIR=/mnt/archive
BZ2_UTIL=...
(
tar -c -- $FILES \
| tee >(sha256sum >"$OUTDIR"/myfiles.tar.sha256) \
| pv -c -N plain 2>/dev/tty \
| "$BZ2_UTIL" \
| pv -c -N compr 2>/dev/tty \
> "$OUTDIR"/myfiles.tar.bz2
) 2>"$OUTDIR"/myfiles.err
"$BZ2_UTIL" -dc -- "$OUTDIR"/myfiles.tar.bz2 \
| sha256sum -c -- "$OUTDIR"/myfiles.tar.sha256
答案2
我对 bzip2、pbzip2、lbzip2 以及 lzip 和 plzip 进行了一些比较基准测试,http://vbtechsupport.com/1614/。只要你有足够的内存,我很喜欢 lbzip2 的速度改进。