损坏的 tar(生成的文件夹小于打包的文件)

损坏的 tar(生成的文件夹小于打包的文件)

我在 SuSe 10.3 Server 版本上创建的 tarball 遇到了问题。

.tar 文件的大小为 6.5 GB,但如果我在 Ubuntu 9.10 下解压它,生成的文件夹大小只有 1.5 GB。

使用的命令:tar cvf用于打包,tar xvf用于解包。

也许有人知道如何解决这个问题,那就太好了。

干杯。

答案1

如果目录中有符号链接或硬链接,那么 tar 可能会将每个链接添加为单独的文件。当您在 Linux 文件系统上解压缩它时,它会恢复链接,然后所有内容占用的空间就会减少。

Tar 不用于压缩,仅用于创建包含多个文件的文件。这就是为什么您通常会发现它通过 gzip 或 bzip 进行传输。

答案2

使用 cpio 可能会获得更好的结果,它更适合更大的备份,并且可以编写脚本来正确处理符号链接和特殊文件。

答案3

如果您有大量小文件,那么您可能会在 tar 中遇到阻塞和目录开销。重要的信息是源目录有多大。tar 可能通过不为文件分配块来压缩文件中的空白空间。尝试使用--apparent-size选项du

您可以尝试将生成的文件列表tar -tf与提取的文件进行比较。使用提取来tar -xf查看提取时是否出现任何错误。尝试重新创建 tar 的副本以查看它有多大。

答案4

我建议尝试帕克斯。至少,在 CentOS 中它是这么叫的。如果我没记错的话,它可以通过跳过无效的 tar 成员来处理损坏的 TAR 文件。否则我建议你尝试使用tar 文件Python 标准库的模块,并通过编程实现这一点。几年前,我也做过类似的事情。

相关内容