![为什么使用7zip压缩文件夹会导致解压后文件夹文件大小不同?](https://linux22.com/image/1539290/%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BD%BF%E7%94%A87zip%E5%8E%8B%E7%BC%A9%E6%96%87%E4%BB%B6%E5%A4%B9%E4%BC%9A%E5%AF%BC%E8%87%B4%E8%A7%A3%E5%8E%8B%E5%90%8E%E6%96%87%E4%BB%B6%E5%A4%B9%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E4%B8%8D%E5%90%8C%EF%BC%9F.png)
我使用 7zip 压缩和加密我的文件夹。但是,我最近注意到,假设我想要压缩和加密的文件夹有 29,805,050,333 字节。然后,我将文件夹转换为带加密的 7zip 存档。
然后,我解压这个 7zip 存档,并(应该)得到第二个包含原始内容的文件夹。但是,将原始文件夹与提取 7zip 存档后得到的文件夹进行比较,我发现新提取的文件夹有 29,805,822,344 字节。
提取文件夹前后有大约 800,000 字节的差异。7zip 做了什么导致我丢失了这些字节?是元数据吗?
答案1
您可能会看到稀疏文件(看起来比磁盘上实际使用的空间更大)被 7zip 或新文件系统“填充”,或碎片或间接块,或者您正在提取到具有不同块大小的不同文件系统,从而看到不同的“使用的磁盘空间”大小。
我确信 Mac 有这个du
实用程序,它可以显示文件(或文件夹路径)使用的实际磁盘空间,或者仅显示数据大小(7zip 等存档程序压缩的数据)。以下是一些有用的选项:
--apparent-size
print apparent sizes, rather than disk usage; although the apparent
size is usually smaller, it may be larger due to holes in ('sparse')
files, internal fragmentation, indirect blocks, and the like
-b, --bytes
equivalent to '--apparent-size --block-size=1'
-s, --summarize
display only a total for each argument
因此,要查看实际使用的磁盘空间,请运行
du --block-size=1 -s
但要查看数据大小,请运行
du -b -s
我也喜欢-h, --human-readable
以人类可读的格式打印尺寸(例如 1K 234M 2G)选项,但它可能会掩盖较小的差异。
因此,请尝试在提取之前和之后运行两个不同的du
命令,以进行更准确的比较。