tar 文件比原始文件夹大?

Too*_*ool 4 tar

我使用 Nautilus 中的“压缩”到 36MB 文件夹。它创建了一个名为fs.tar.gz.

它的fs.tar.gz大小为 98MB。

这怎么可能?

我确实在某处读到符号链接或类似的东西可能会导致这种情况 - 我的文件夹中确实有符号链接。

Rin*_*ind 5

tar 文件具有开销,因为它还包含有关如何重新创建文件的信息。如果您添加到 tar 文件本身的内容已经被压缩,您最终得到的文件可能比所有文件的所有 Mib 的总和还要大。但是......我们谈论的是少量的开销。不像所有文件大小的 2 倍。这确实有点像符号链接。

您可以用来tar -tvf fs.tar.gz | more查看已包含但“不应该”存在的文件。如果符号链接和文件都位于用于创建 tar 文件的目录中,则最终将包含这两个文件。

  • Tar 有一个不归档符号链接的选项;从手册页:

    -h, --dereference
    don't archive symlinks; archive the files they point to
    
    Run Code Online (Sandbox Code Playgroud)

    弄乱符号链接时请务必小心:您可能会得到需要自行修复的损坏符号链接。

  • Tar 允许使用 `--exclude {PATTERN} 或 --exclude_from {FILE} 排除文件。这使您可以包含符号链接和文件并跳过文件本身。

  • 仅包含文件而不包含您可以使用的符号链接find /dir1 -type f |tar {etc}

  • -h 选项将包含符号链接指向的文件,该文件比符号链接本身大得多,并且似乎就是这里发生的情况,因此不会解决问题。符号链接非常小,通常只占用 tar 文件中几个字节的空间,而不是几个 MiB。另外,对于使用 find,您可能不想使用“/dir”(完整路径),而是使用相对路径,例如在 dir1 的包含目录中使用“find dir1”。 (2认同)