tar-cvzf 在压缩大文件时是否有可能添加文件信息?(文件约为 200 GB)



我使用 tar -cvzf 命令压缩了一个大型常规 unix 文件 (.dat(。此文件的大小约为 200 GB。 压缩后,它的大小变成了27gb。但是在读取该压缩文件中的数据时,我可以看到在文件开头添加的匿名数据。 这可能吗? 我尝试再次解压缩该文件,发现解压缩的文件没有此类匿名记录。

GNU tar 命令是自由软件。请研究其源代码。当然,请阅读它的手册页 tar(1(。

实际上,tar存档以头文件tar.h中记录的标头开头。有一个与焦油相关的POSIX标准。

另见彼得·米勒的迟到实用程序。

不要将tar存档与 Info-ZIP 处理的存档混淆zip存档(因此zipunzip命令(。

GNU zip - 一个压缩器,可以由tar启动的gzip程序,特别是你的tar czvf命令 - 也是自由软件,当然你应该研究它的源代码,如果有兴趣。

一些Unix shell(特别是sash或busybox(有一个内置的tar

我尝试再次解压缩该文件,发现解压缩的文件没有此类匿名记录。

AFAIK,大多数Linux文件系统试图或多或少地实现基于read(2(和write(2(系统调用的POSIX标准,并且他们不知道记录。如果你需要"记录",可以考虑使用数据库(如sqlite或PostGreSQL(或索引文件(如GDBM( - 两者都建立在Linux文件系统或块设备之上。

另请阅读一本关于操作系统的好教科书。

请注意,"大型常规 unix 文件"主要是字节序列。它们内部没有记录的概念,除了作为其他用户空间程序通过 syscalls(2( 使用的约定。另请参阅 path_resolution(7( 和 inode(7(。

最新更新