我一直在尝试节省 Linux 服务器上的空间,并且我有一个文件夹,其子文件夹中包含 22GB 的图像。
所以我决定压缩它们。
首先我使用焦油:
tar -zcf folder.tar folder
然后gzip
gzip folder
最后,为了以防万一,bzip2
bzip2 folder
毕竟,所有folder.tar.gz.bzip2
s 的总数仍然是 22GB!使用更精细的精度,可节省 1% 的空间!
我在这里做错了什么吗?我预计节省的费用会比 1% 多很多倍!
我还能如何压缩文件?
答案1
压缩比为非常取决于您要压缩的内容。文本压缩得如此之好是因为它甚至没有开始充分利用同一二进制空间中可表示的全部数字。因此,这样做的格式(例如压缩文件)可以通过使用所有那些在文本编码中没有任何意义的二进制数字来在更少的空间中存储相同的信息,并且可以有效地表示单个字节中的字符的整个进展并获得良好的压缩比那样。
如果文件已经被压缩,您通常不会看到再次压缩它们有多大优势。如果这确实为您节省了额外的空间,则可能表明第一种压缩算法有点糟糕。从问题的性质来看,我假设其中很多是媒体文件,因此已经被压缩(尽管算法优先考虑解压缩速度),因此您可能不会从它们中获得太多信息。有点像石头里的血:它们已经在不丢失信息的情况下尽可能小了。
如果我非常担心空间,我只需执行“bzip2 -9”并称其为好。不过,我听说过有关 XZ 的比率的好消息。我自己没有使用过 XZ(除了解压缩其他人的东西),但它应该比 bzip2 有更好的比率,但压缩/解压缩需要更长的时间。
答案2
您的压缩尝试失败,因为您的数据已经被高度压缩,并且没有更多的信息可以获取,请参阅其他答案以获取更详细的解释。但是,如果您能同意有损的压缩,与无损的就像您之前尝试过的那样,您可以显着压缩图像。但由于数据被删除,因此无法恢复。
以下是使用 imagemagick 重新压缩所有 JPEG 图像的示例。请注意,这将覆盖您的文件。
find image_directory -type f -name "*.jpg" -exec mogrify -quality 75% {} \+
答案3
最常见的图像格式已经被压缩(如 jpg、png、gif),因此您不会节省太多。 1% 听起来不错。
添加更多压缩实际上可以使结果(稍微)更大,因为压缩算法对压缩数据没有任何好处,然后格式(例如gzip)必须向输出添加标头和/或结构信息。
对不起!如果您使用的是 png,您可以尝试使用以下命令缩小文件粉碎。
答案4
另一点值得提出:使用多种压缩工具/算法实际上可能会导致最终结果的大小膨胀并变得比需要的更大。这意味着如果您将 100GB 压缩到 10GB,然后尝试再次压缩它,您最终可能会得到 ~15GB,具体取决于您压缩的内容以及压缩的内容。
就我个人而言,我从来不做任何事情,只是tar cjvf container.tar.bz2 /target
因为双重压缩节省的磁盘空间量微乎其微。