在不存储压缩文件的情况下,估计目录所能达到的压缩级别的最佳方法是什么?
我有大量不同性质的文件(二进制文件、文本文件、压缩文件等)的目录和子目录。我需要压缩其中一些目录,但我没有足够的空间压缩所有目录(甚至有些目录),并按压缩速率对它们进行排序。
由于这个原因,我需要列出他们的压缩率(可以压缩多少),才能决定要压缩的是什么。
我有一个目录大小列表,用于未压缩目录:
du -f --maxdepth=3 > /tmp/list_of_directories可以使用Tar、bz2或gzip使用快速压缩级别将每个目录压缩为空管道,但如果不保留文件,则不会生成压缩速率静力学。
由于整个内容必须以某种方式压缩到一个zip管道中,这个解决方案将是非常密集的处理,但在存储方面非常轻,因为压缩的结果在生成时会被丢弃。
简而言之,这个问题可以继续到“是否有任何工具可以为给定的流、文件或目录生成压缩速率统计信息而不存储最终的压缩文件?”
发布于 2019-06-28 17:47:40
这可以通过将目录的内容传输到压缩工具并将压缩流重定向到空管道(以避免使用空间)来完成。此压缩工具必须:1-压缩到管道流2-能够压缩到/dev/null 2-对丢弃的文件提供压缩统计信息
在最流行的工具中,bzip2是最适合的工具,特别是由于输出状态中有数量字节的进出。
最后的解决方案如下:
cat $(查找DIRECTORY_PATH) \\ bzip2 -c --详细> /dev/null
其中第一部分将连接所选目录中任何文件的所有内容。
cat $(查找DIRECTORY_PATH)
虽然第二部分将压缩来自第一部分的级联输入,但在最后生成单个报告(--详细),同时将输出重定向到空管道。
bzip2 -c --详细> /dev/null
输出应该如下所示,其中"(\d+) in“regex应该捕获字节目录中所有文件的原始大小,以及"(\d+)”压缩大小(以字节为单位)。输出应该如下所示:
1.581:1,5.059位/字节,节省36.77%,1039062 in,657029外接。
该解决方案对目录上的文件数量有限制,但可以作为一个很好的起点来识别具有良好压缩潜力的目录,以节省空间。
https://unix.stackexchange.com/questions/527324
复制相似问题