存档

文章标签 ‘tar’,文章数:3

在solaris系统中,tar命令中排除指定目录和文件的参数与linux中tar命令不同。

在solaris 10中,可以这么用。

比如:我想打开目录/sybase到/tmp/sybase.tar,排除目录/sybase下的两个文件:EBF17156.tar和

cd /sybase

echo /sybase/EBF17156.tar > excludefile

echo /sybase/ase1503_solsparc64_2.tar  >> excludefile

tar cvfX /tmp/sybase.tar excludefile  /sybase

在ibm-aix5.3下用tar打包一个文件夹时报错:tar: 0511-194 Reached end-of-file before expected.

用的命令是:tar -cvf /tmp/sybase12503.tar /sybase/sybase12x

解决方法:

执行ulimit -f 返回结果为:2097151,说明系统对用户所能用的文件大小限制为:2097151*512=1G

此时查看没有成功打包完成的/tmp/sybase12503.tar文件,发现其大小正好是:1073741312 (bytes).

可通过改 /etc/security/limits 文件中的fsize来设置为无限制:

default:
    fsize = -1

为使 /etc/security/limits 文件的更改生效,用户必须注销当前登录会话并重新登录。
 
重新登录后,执行ulimit -a 返回结果为:unlimited。此时更改已经生效,对用户所能用的文件大小不加限制。但是,
无论 ulimit 设置如何,AIX 上的标准文件系统都有2GB文件大小限制,如果需要建大于2GB的文件需要启用大文件 选项创建文件系统。
 
然后,再次执行:tar -cvf /tmp/sybase12503.tar /sybase/sybase12x
成功将/sybase/sybase12x打包成/tmp/sybase12503.tar。
-bash-3.2$ ls -al /tmp/sybase12503.tar
-rw-r--r--    1 root     system   1142118400 May 12 11:17 /tmp/sybase12503.tar
 
补充:在网上搜到用tar打包的文件超过2G的时候,也是报同样的错误。此时就是文件系统的原因了。应该不是jfs2或者big file enable的jfs文件系统。
-bash-3.2$ lsfs -q /tmp
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/hd3        --         /tmp                   jfs2  20971520 --         yes  no
本机的/tmp文件系统为jfs2,应该可以支持2G以上的文件。
 
————————————————————————————————-
—- 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
—- 转载务必注明原始出处 : http://www.dbainfo.net
—- 关键字:tar aix ulimit jfs2 打包 压缩 解压
————————————————————————————————-

在使用tar命令解压文件的时候,两次都出现了checksum error的错误,只是错误信息稍微有点差别。

情况1:

最近配置AIX下的Java环境,使用tar -xvf时总出现checksum error的信息。

# tar -xvf Java5_64.sdk.tar
x Java5_64.sdk, 74738688 bytes, 145974 media blocks.
tar: 0511-169 A directory checksum error on media; -265812960 not equal to 67621

最后发现原因,是因为我使用ftp下载时没有设置为二进制方式传输数据,ftp会默认使用Ascii的方式来传输,这样会破环文件。

解决方法: 登录ftp之后,输入bin,然后再使用get文件就可以了。

情况2:

用tar命令解压一个非tape archive文件时(格式为tgz),也报类似的错误!

-bash-3.2$ tar -xvf ase1503_aix64_2.tgz
tar: 0511-169 A directory checksum error on media; 0 not equal to 67634.

解决方法:先将tgz压缩文件转化成tar格式的,

$gunzip -S tgz ase1503_aix64_2.tgz

然后再用tar命令解压生成的ase1503_aix64_2.tar文件就可以了。

$tar -xvf ase1503_aix64_2.tar

————————————————————————————————————
——— 本文为andkylee个人原创,请在尊重作者劳动成果的前提下进行转载;
——— 转载务必注明原始出处 : http://www.dbainfo.net
——— 关键字:解压 tar 错误 aix gunzip
————————————————————————————————————