老AIX系统tar不能超过8G的解决方法

时间:2021-01-23 17:19:05

在老AIX系统下,比如AIX5、6(亲测AIX 7.1没有这个问题),系统默认支持tar命令,但是IBM的tar和和同时期LINUX上的GNU tar一个最大的区别就是IBM的tar不能打包8G以上的打包,也就是说如果单个文件或者文件累积超过8G就不能使用tar进行打包,网上给出的解决方案是使用pax进行打包,但是pax打包相对与tar有很多不方便的地方。

1、pax打包同时不能使用gzip压缩,需要打包完成之后再压缩一遍,占用接近两倍的磁盘空间。

2、pax解包的时候是按照绝对路径解包,会导致在解包的服务器上新建很多目录。不能灵活解包

所以最方便的方案是将老AIX系统上的tar命令换成GNU的tar,来规避8G的限制。

首先看一下老AIX系统下,打包大文件时的报错,比如这里我使用db2move export命令导出一张16G的大表。

bash-4.2$ ls -l
total 69882808
-rw-r--r--    1 als6     db2grp1     1365439 Apr 24 18:06 DB_DLL.sql
-rw-r--r--    1 als6     db2grp1         401 Apr 24 18:55 EXPORT.out
-rw-r--r--    1 als6     db2grp1          90 Apr 24 18:55 db2move.lst
-rw-r--r--    1 als6     db2grp1  17889291019 Apr 24 18:55 tab1.ixf
-rw-r--r--    1 als6     db2grp1         148 Apr 24 18:55 tab1.msg
-rw-r--r--    1 als6     db2grp1       12237 Apr 24 18:55 tab2.ixf
-rw-r--r--    1 als6     db2grp1         141 Apr 24 18:55 tab2.msg
bash-4.2$ tar -cvf test.tar ./tab*
tar: 0511-825 The file './tab1.ixf' is too large.
a ./tab1.msg 1 blocks.
a ./tab2.ixf 24 blocks.
a ./tab2.msg 1 blocks.
bash-4.2$ 

我们发现在打包的过程中就会报 tar: 0511-825 The file './tab1.ixf' is too large. 的错误,无法继续打包。

同样,对于其他系统打出来的,大于8G的tar包,老AIX不能解也不能读,如下

bash-4.2$ /usr/bin/oldtar tvf ./haha.tar      
-rw-r--r-- 209 205 17889300480 Apr 24 18:55:08 2018 ./tab1.ixf
tar: Unexpected end-of-file while reading from the storage media.

会报出tar: Unexpected end-of-file while reading from the storage media.错误


所以我们需要安装GNU的tar,下载地址是(根据当前AIX系统版本选择相应的rpm包,一般选择小于等于当前系统版本的包):

https://download.csdn.net/download/lvshaorong/10372595

或者到某些国外社区上下载

ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/tar/

ftp://www.oss4aix.org/everything/RPMS/


比如我的AIX系统版本为5.3.0.0,所以我安装的版本就是tar-1.14-2.aix5.1.ppc.rpm,注意在ftp上传的时候要选择binary模式,否则无法正常安装。

使用

rpm -ivh tar-1.14-2.aix5.1.ppc.rpm

安装rpm包,然后相应的tar可执行文件就会安装到

/opt/freeware/bin/tar

同时会生成/usr/bin/gtar的软连接,而系统默认的tar还是原来的/usr/bin/tar。

所以我们在使用tar命令时只需将tar换成gtar就可以了。可以轻松的打包和解包8G以上的大包。与Linux上的tar使用无异。

gtar -cvf test.tar ./tab*