压缩(通过 tar gzip)后的大小远大于原始文件夹

压缩(通过 tar gzip)后的大小远大于原始文件夹

/var/www我使用以下tar命令(包括-z(gzip))备份了文件夹:

tar -cvzf file.gz /var/www/*

我检查了 的大小www。它大约是 100kb,但 生成的文件大小tar大约是 185Mb。这是什么原因造成的?

答案1

ls -sh不考虑子目录。

我将用du -csh -- *它来计算这个(这--可以防止以“破折号”开头的文件出现问题)。其中...

   -s, --summarize
      display only a total for each argument
  -h, --human-readable
      print sizes in human readable format (e.g., 1K 234M 2G)
   -c, --total
      produce a grand total

曼杜

但是如果你有硬链接的话它会扰乱总数。

答案2

你可能搞错了原始目录的内容有多大。对于目录,ls -l列出目录本身的大小,不是该目录中包含的文件。例如

drwxr-xr-x 8 www-data www-data 4096 Sep  2 03:12 some-dir

显示目录本身占用 4096 字节。但这只是some-dir文件系统结构中条目的大小。要汇总目录内容的大小,可以使用du(“磁盘使用情况”),例如

du -s some-dir

ls其他一些命令一样,您可以使用h“人类可读”单位的开关:

du -s some-dir
1804    some-dir

du -sh some-dir
1,8M    some-dir

答案3

这次情况并非如此(见接受的答案),但有时归档和压缩的额外开销可能会导致归档比原始内容更大。

当熵极高时,情况确实如此,例如目录中充满了随机文本和/或媒体文件。

示例 1:随机数据

$ dd if=/dev/urandom of=test bs=1M count=100
$ tar -zcf 测试.tgz 测试
$ tar -cf 测试.tar 测试
$ gzip -ck --best test.tar > test-best.tar.gz
$ gzip -ck --fast test.tar > test-fast.tar.gz
$ xz -ck --fast test.tar >test.tar.xz
$ xz --fast -ck 测试>test.xz
$ gzip --best -ck 测试>test.gz
$ bzip2 --best -ck 测试>test.bz2
$ ls -lS 测试*
-rw-r--r-- 1 adamhotep adamhotep 105326395 10月 7 16:52 test.bz2
-rw-r--r-- 1 adamhotep adamhotep 104875661 10月 7 16:49 test-fast.tar.gz
-rw-r--r-- 1 adamhotep adamhotep 104875661 10月 7 16:48 test.tar.gz
-rw-r--r-- 1 adamhotep adamhotep 104874474 10月 7 16:49 test-best.tar.gz
-rw-r--r-- 1 adamhotep adamhotep 104874206 10月 7 16:51 test.gz
-rw-r--r-- 1 adamhotep adamhotep 104867840 10月 7日 16:48 test.tar
-rw-r--r-- 1 adamhotep adamhotep 104864052 10月 7 16:50 test.tar.xz
-rw-r--r-- 1 adamhotep adamhotep 104862868 10月 7 16:50 test.xz
-rw-r--r-- 1 adamhotep adamhotep 104857600 10月 7日 16:47 测试

这创建了一个随机的 100M 文件,然后以几种不同的方式对其进行存档和压缩。结果按大小排序(最大优先)。如您所见,tarball 容器和压缩标头的开销很大,而且明显缺乏可压缩的模式。

毫无疑问,原始随机文件在这里是最小的。

(我使用-ck并通过管道传输了压缩命令的输出,以便您可以更清楚地看到它创建了什么输出文件。这是多余的。)

示例 2:视频+音频数据

$ youtube-dl -o test.mp4'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
[youtube] dQw4w9WgXcQ:正在下载网页
[youtube] dQw4w9WgXcQ:下载视频信息网页
[youtube] dQw4w9WgXcQ:提取视频信息
[youtube] dQw4w9WgXcQ:正在下载 js 播放器 en_US-vflOj6Vz8
[下载] 目标:test.mp4
[下载] 100% 56.64MiB,耗时 00:07
$ gzip --best -ck test.mp4 >test.mp4.gz
$ xz --fast -ck test.mp4 >test.mp4.xz
$ ls -lS 测试.mp4*
-rw-r--r-- 1 adamhotep adamhotep 59388616 10月 7 16:52 test.mp4
-rw-r--r-- 1 adamhotep adamhotep 59332683 10月 7 16:52 test.mp4.gz
-rw-r--r-- 1 adamhotep adamhotep 59320572 10月 7 16:52 test.mp4.xz

我重复了此测试视频的 gzip 和 xz 测试。元数据足够多,仅需通过压缩即可缩小它(西泽可以节省 68k,高达 0.1%!)。我怀疑这与 .mp4 留下的提示有关,以确保正确的流式传输和视听同步。这个特定的视频缺少字幕。

 

简而言之,不要压缩随机或压缩数据。

相关内容