tar加倍了目录的大小


0

在Solaris 10下,我有一个名为apps的目录。我进入该目录并输入:

-bash-3.00# du -hs
7.2G   .

然后我进入:

tar -cvf /var/run/apps.tar apps

结果:

-bash-3.00# ls -lad apps.tar 
-rw-r--r--   1 root     root     14174289408 Mar  5 16:05 apps.tar

7GB目录如何成为14GB焦油?


1
而且你确定你没有打包 tar 进入自己?
Der Hochstapler

我在这里粘贴了我使用的命令,所以我很确定。 tar是否默认使用simlinks?我真的不明白......
Thomas

你当前的工作目录是什么并不是很明显。这可能是相关的。
Der Hochstapler

在这 问题/答案 ,人们讨论了如何处理不良的solaris链接。
woliveirajr

Answers:


1

tar本身在存储小文件方面效率不高。它使用固定大小的512字节块。元数据也以比文件系统更简洁的方式存储。您观察到的差异可能是由于您的apps目录中的大量小文件造成的。

为了减轻这种影响,我建议用这种方式压缩tar输出:

  tar cvf - apps | gzip -v > /var/run/apps.tgz

如果您碰巧使用GNU tar,那将是:

  gtar czvf /var/run/apps.tgz apps

你是对的,我确实有很多小文件。有没有办法可以确保它是因为小文件而不是任何simlink混乱?
Thomas

Solaris tar不遵循您使用的选项的符号链接。
jlliagre

1

Tar不对文件执行任何压缩,并且将始终生成一个结果tar文件,该文件大于进入它的所有文件的总和。

焦油的确切原因是这样的 许多 较大的可能是许多因素中的任何一个,例如大量小文件未被有效存储,硬链接被跟踪导致目录树中的重复或稀疏文件的扁平化导致tar存储库中的大得多的未分析文件。

如果您想创建一个小文件进行备份或转移到另一个系统,我建议您使用Gzip(tar.gz)文件或其他压缩算法压缩tar文件以生成更小的文件。 Tar文件往往压缩得很好,所以这应该会产生一个远低于你引用的14GB的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.