有没有可能 tar-cvzf 在压缩大文件时添加文件信息? (文件大约 200 GB)
Is it possible that tar-cvzf adds file information while zipping large file? (File is around 200 gb )
我使用 tar -cvzf 命令压缩了一个大型常规 unix 文件 (.dat)。该文件的大小约为 200 GB。
压缩后它变成了 27gb 大小。但是在读取该压缩文件中的数据时,我可以看到在文件的 start 添加了匿名数据。
这可能吗?
我再次尝试解压那个文件,发现解压后的文件没有这样的匿名记录。
GNU tar command is free software. Please study its source code. Read of course its man page, tar(1).
确实,一个 tar
存档以 header 开始,记录在 header file tar.h
. There is a POSIX standard related to tar.
另见 Peter Miller 的 tardy 工具。
不要将 tar
档案与 zip
ones handled by Info-ZIP 混淆(所以 zip
和 unzip
命令)。
GNU zip - 压缩器,gzip
程序可以通过 tar
启动,特别是你的 tar czvf
命令 - 也是免费软件,当然你有兴趣的应该研究一下它的源代码。
有些 Unix shells (notably sash or busybox) 有内置 tar
.
I tried to unzip that file again and found that unzipped file has no such anonymous records.
据我所知,大多数 Linux filesystems try to implement more or less the POSIX standard -based upon read(2) and write(2) system calls, and they don't know about records. If you need "records", consider using databases (like sqlite or PostGreSQL) or indexed files (like GDBM) - both built above Linux file systems or block devices。
看了也不错textbook on operating systems.
注意 "a large regular unix file" 主要是一个字节序列。 其中没有记录的概念,除了作为其他user-space programs thru syscalls(2). See also path_resolution(7) and inode(7).
使用的约定
我使用 tar -cvzf 命令压缩了一个大型常规 unix 文件 (.dat)。该文件的大小约为 200 GB。 压缩后它变成了 27gb 大小。但是在读取该压缩文件中的数据时,我可以看到在文件的 start 添加了匿名数据。 这可能吗? 我再次尝试解压那个文件,发现解压后的文件没有这样的匿名记录。
GNU tar command is free software. Please study its source code. Read of course its man page, tar(1).
确实,一个 tar
存档以 header 开始,记录在 header file tar.h
. There is a POSIX standard related to tar.
另见 Peter Miller 的 tardy 工具。
不要将 tar
档案与 zip
ones handled by Info-ZIP 混淆(所以 zip
和 unzip
命令)。
GNU zip - 压缩器,gzip
程序可以通过 tar
启动,特别是你的 tar czvf
命令 - 也是免费软件,当然你有兴趣的应该研究一下它的源代码。
有些 Unix shells (notably sash or busybox) 有内置 tar
.
I tried to unzip that file again and found that unzipped file has no such anonymous records.
据我所知,大多数 Linux filesystems try to implement more or less the POSIX standard -based upon read(2) and write(2) system calls, and they don't know about records. If you need "records", consider using databases (like sqlite or PostGreSQL) or indexed files (like GDBM) - both built above Linux file systems or block devices。
看了也不错textbook on operating systems.
注意 "a large regular unix file" 主要是一个字节序列。 其中没有记录的概念,除了作为其他user-space programs thru syscalls(2). See also path_resolution(7) and inode(7).
使用的约定