我在 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 标准库的模块,并通过编程实现这一点。几年前,我也做过类似的事情。