--------------------------------------------------------------------------------
10. 使用 bzip2 来再压缩其他的压缩格式
下面的 perl 程式会把以下列的压缩格式档 (.tar.gz, .tgz. .tar.Z, 和 .Z for this iteration) 重新打包成最佳的压缩值 。这 perl 原始程式都有全方位的好文件来说明它做什麽以及它如何办到的 。
#!/usr/bin/perl -w
#######################################################
# #
# This program takes compressed and gzipped programs#
# in the current directory and turns them into bzip2#
# format.It handles the .tgz extension in a #
# reasonable way, producing a .tar.bz2 file.#
# #
#######################################################
$counter = 0;
$saved_bytes = 0;
$totals_file = "/tmp/machine_bzip2_total";
$machine_bzip2_total = 0;
while(<*[Zz]>) {
next if /^bzip2-0.1pl2.tar.gz$/;
push @files, $_;
}
$total = scalar(@files);
foreach (@files) {
if (/tgz$/) {
($new=$_) =~ s/tgz$/tar.bz2/;
} else {
($new=$_) =~ s/.g?z$/.bz2/i;
}
$orig_size = (stat $_)[7];
$counter;
print "Repacking $_ ($counter/$total)...n";
if ((system "gzip -cd $_ |bzip2 >$new") == 0) {
$new_size = (stat $new)[7];
$factor = int(100*$new_size/$orig_size .5);
$saved_bytes= $orig_size-$new_size;
print "$new is about $factor% of the size of $_. :",($factor<100)?")":"(","n";
unlink $_;
} else {
print "Arrgghh!Something happened to $_: $!n";
}
}
print "You"ve ",
($saved_bytes>=0)?"saved":"lost",
" $saved_bytes bytes of storage space :",
($saved_bytes>=0)?")":"(", "n";
unless (-e "/tmp/machine_bzip2_total") {
system ("echo "0" >/tmp/machine_bzip2_total");
system ("chmod", "0666", "/tmp/machine_bzip2_total");
}
chomp($machine_bzip2_total = `cat $totals_file`);
open TOTAL, ">$totals_file"
or die "Can"t open system-wide total: $!";
$machine_bzip2_total= $saved_bytes;
print TOTAL $machine_bzip2_total;
close TOTAL;
print "That"s a machine-wide total of ",`cat $totals_file`," bytes saved.n";
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
11. 中译本
译者注: 若您发现本文件内容有翻译不顺畅或错误的地方,请您来信告诉我,以做更正,谢谢 。译者电子邮件 linuxer.bbs@cis.nctu.edu.tw 或 linux4tw@geocities.com
译注:这份 HOWTO 文件的中文版可在台湾 Linux 使用者组织下的中文 Linux 文件计画 http://www.linux.org.tw/CLDP/
或是"Linux for Taiwan 台湾人的 Linux " http://members.xoom.com/linux4tw/ 下取得 。
--------------------------------------------------------------------------------
推荐阅读
- Linux 核心--17.关于Linux的Web与FTP站点 --18.作者简介
- Automount mini-Howto 文件系统自动挂载程序
- Linux中IP隧道的分析与建议
- 汤姆索亚历险记作者 汤姆索亚历险记作者是谁
- 资深Linux程序员的开发经验谈
- 儒林外史作者是谁 儒林外史是谁写的
- 白鹅一文中作者抓住鹅的什么特点
- 三国演义作者是谁 三国演义的作者是谁
- 孙权劝学选自什么著作 孙权劝学选自什么著作作者
- 赵州桥作者是谁 小学课文赵州桥作者是谁
