在老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*