代码改变世界

Linux下解压超过4G的zip文件

2014-01-09 11:52  潇湘隐者  阅读(28088)  评论(0编辑  收藏  举报

从Windows平台通过FTP上传一个大小约为6G的zip文件到Linux系统(Oracle Linux Server release 5.7)上,解压过程中出现如下错误:

   1: [root@gsp tmp]# unzip -n OracleLinuxandPataches.zip -d /u02/tmp
   2: error:  Zip file too big (greater than 4294959102 bytes)
   3: Archive:  OracleLinuxandPataches.zip
   4: warning [OracleLinuxandPataches.zip]:  2107863523 extra bytes at beginning or within zipfile
   5:   (attempting to process anyway)
   6: error [OracleLinuxandPataches.zip]:  start of central directory not found;
   7:   zipfile corrupt.
   8:   (please check that you have transferred or created the zipfile in the
   9:   appropriate BINARY mode and that you have compiled UnZip properly)

                                                                                                 截图如下

                     clip_image001

从网上搜索了一下相关资料,发现是当前的unzip版本不支持4G以上的压缩包。要么升级到最新版本的unzip,要么使用7-Zip forLinux版本的的p7zip。

如下所示,当前的unzip版本为5.52

   1: [root@gsp database]# unzip -v
   2: UnZip 5.52 of 28 February 2005, by Info-ZIP.  Maintained by C. Spieler.  Send
   3: bug reports using http://www.info-zip.org/zip-bug.html; see README for details.
   4:  
   5: Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;
   6: see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.
   7:  
   8: Compiled with gcc 4.1.2 20080704 (Red Hat 4.1.2-44) for Unix (Linux ELF) on Apr  8 2009.
   9:  
  10: UnZip special compilation options:
  11:         COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)
  12:         SET_DIR_ATTRIB
  13:         TIMESTAMP
  14:         USE_EF_UT_TIME
  15:         USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)
  16:         USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)
  17:         VMS_TEXT_CONV
  18:         [decryption, version 2.9 of 05 May 2000]
  19:  
  20: UnZip and ZipInfo environment options:
  21:            UNZIP:  [none]
  22:         UNZIPOPT:  [none]
  23:          ZIPINFO:  [none]
  24:       ZIPINFOOPT:  [none]

于是我从http://sourceforge.net/projects/p7zip/files/p7zip/上下载了p7zip_9.20.1_src_all.tar.bz2 安装包文件。

   1: [root@gsp tmp]# tar -xjpf   p7zip_9.20.1_src_all.tar.bz2
   2: [root@gsp tmp]cd p7zip_9.20.1
   3: [root@gsp p7zip_9.20.1]# make && make install
   4: mkdir -p bin
   5: make -C CPP/7zip/Bundles/Alone all
   6: make[1]: Entering directory `/u02/tmp/p7zip_9.20.1/CPP/7zip/Bundles/Alone'
   7: g++ -O -pipe -s -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DNDEBUG -D_REENTRANT -DENV_UNIX -D_7ZIP_LARGE_PAGES -DBREAK_HANDLER -DUNICODE -D_UNICODE -c -I. -I../../../myWindows -I../../../ -I../../../include_windows ../../../myWindows/myGetTickCount.cpp
   8: make[1]: g++: Command not found
   9: make[1]: *** [myGetTickCount.o] Error 127
  10: make[1]: Leaving directory `/u02/tmp/p7zip_9.20.1/CPP/7zip/Bundles/Alone'
  11: make: *** [7za] Error 2
  12:  

结果安装过程中出现上面错误,出现上面错误是因为这台服务器是刚安装的测试服务器,还没有安装gcc和gcc-c++包。

   1: [root@gsp Server]# rpm -q gcc gcc-c++
   2: package gcc is not installed
   3: package gcc-c++ is not installed

于是配置YUM源后,安装gcc 和 gcc-c++

   1: [root@gsp yum.repos.d]# more rhel-debuginfo.repo 
   2: [rhel-debuginfo]
   3:  
   4: name=Red Hat Enterprise Linux LOCAL SOURCE
   5:  
   6: baseurl=file:///mnt/cdrom/Server
   7:  
   8: enabled=1
   9:  
  10: gpgcheck=0
  11:  
  12:  
  13:  
  14: [root@gsp yum.repos.d]# yum install gcc
  15: Loaded plugins: rhnplugin, security
  16: This system is not registered with ULN.
  17: ULN support will be disabled.
  18: Setting up Install Process
  19: Resolving Dependencies
  20: --> Running transaction check
  21: ---> Package gcc.x86_64 0:4.1.2-51.el5 set to be updated
  22: --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc
  23: --> Running transaction check
  24: ---> Package glibc-devel.x86_64 0:2.5-65 set to be updated
  25: --> Processing Dependency: glibc-headers = 2.5-65 for package: glibc-devel
  26: --> Processing Dependency: glibc-headers for package: glibc-devel
  27: --> Running transaction check
  28: ---> Package glibc-headers.x86_64 0:2.5-65 set to be updated
  29: --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
  30: --> Processing Dependency: kernel-headers for package: glibc-headers
  31: --> Running transaction check
  32: ---> Package kernel-uek-headers.x86_64 0:2.6.32-200.13.1.el5uek set to be updated
  33: --> Finished Dependency Resolution
  34:  
  35: Dependencies Resolved
  36:  
  37: ====================================================================================================================================
  38:  Package                           Arch                  Version                                Repository                     Size
  39: ====================================================================================================================================
  40: Installing:
  41:  gcc                               x86_64                4.1.2-51.el5                           rhel-debuginfo                5.3 M
  42: Installing for dependencies:
  43:  glibc-devel                       x86_64                2.5-65                                 rhel-debuginfo                2.4 M
  44:  glibc-headers                     x86_64                2.5-65                                 rhel-debuginfo                594 k
  45:  kernel-uek-headers                x86_64                2.6.32-200.13.1.el5uek                 rhel-debuginfo                724 k
  46:  
  47: Transaction Summary
  48: ====================================================================================================================================
  49: Install       4 Package(s)
  50: Upgrade       0 Package(s)
  51:  
  52: Total download size: 9.0 M
  53: Is this ok [y/N]: y
  54: Downloading Packages:
  55: ------------------------------------------------------------------------------------------------------------------------------------
  56: Total                                                                                               2.6 GB/s | 9.0 MB     00:00     
  57: Running rpm_check_debug
  58: Running Transaction Test
  59: Finished Transaction Test
  60: Transaction Test Succeeded
  61: Running Transaction
  62:   Installing     : kernel-uek-headers                                                                                           1/4 
  63:   Installing     : glibc-headers                                                                                                2/4 
  64:   Installing     : glibc-devel                                                                                                  3/4 
  65:   Installing     : gcc                                                                                                          4/4 
  66:  
  67: Installed:
  68:   gcc.x86_64 0:4.1.2-51.el5                                                                                                         
  69:  
  70: Dependency Installed:
  71:   glibc-devel.x86_64 0:2.5-65        glibc-headers.x86_64 0:2.5-65        kernel-uek-headers.x86_64 0:2.6.32-200.13.1.el5uek       
  72:  
  73: Complete!
  74: [root@gsp yum.repos.d]# yum install gcc-c++
  75: Loaded plugins: rhnplugin, security
  76: This system is not registered with ULN.
  77: ULN support will be disabled.
  78: Setting up Install Process
  79: Resolving Dependencies
  80: --> Running transaction check
  81: ---> Package gcc-c++.x86_64 0:4.1.2-51.el5 set to be updated
  82: --> Processing Dependency: libstdc++-devel = 4.1.2-51.el5 for package: gcc-c++
  83: --> Running transaction check
  84: ---> Package libstdc++-devel.x86_64 0:4.1.2-51.el5 set to be updated
  85: rhel-debuginfo/filelists                                                                                     | 3.1 MB     00:00     
  86: --> Finished Dependency Resolution
  87:  
  88: Dependencies Resolved
  89:  
  90: ====================================================================================================================================
  91:  Package                           Arch                     Version                          Repository                        Size
  92: ====================================================================================================================================
  93: Installing:
  94:  gcc-c++                           x86_64                   4.1.2-51.el5                     rhel-debuginfo                   3.8 M
  95: Installing for dependencies:
  96:  libstdc++-devel                   x86_64                   4.1.2-51.el5                     rhel-debuginfo                   2.8 M
  97:  
  98: Transaction Summary
  99: ====================================================================================================================================
 100: Install       2 Package(s)
 101: Upgrade       0 Package(s)
 102:  
 103: Total download size: 6.6 M
 104: Is this ok [y/N]: y
 105: Downloading Packages:
 106: ------------------------------------------------------------------------------------------------------------------------------------
 107: Total                                                                                               3.5 GB/s | 6.6 MB     00:00     
 108: Running rpm_check_debug
 109: Running Transaction Test
 110: Finished Transaction Test
 111: Transaction Test Succeeded
 112: Running Transaction
 113:   Installing     : libstdc++-devel                                                                                              1/2 
 114:   Installing     : gcc-c++                                                                                                      2/2 
 115:  
 116: Installed:
 117:   gcc-c++.x86_64 0:4.1.2-51.el5                                                                                                     
 118:  
 119: Dependency Installed:
 120:   libstdc++-devel.x86_64 0:4.1.2-51.el5                                                                                             
 121:  
 122: Complete!
 123: [root@CEG-eSCM yum.repos.d]# 
 124:  

然后使用[root@gsp p7zip_9.20.1]# make && make install安装好p7zip后,使用7za x OracleLinuxandPataches.zip成功解压该zip压缩文件。

   1: [root@gsp tmp]# 7za x OracleLinuxandPataches.zip 
   2:  
   3: 7-Zip (A) [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
   4: p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)
   5:  
   6: Processing archive: OracleLinuxandPataches.zip
   7:  
   8: Extracting  Oracle Linux and Pataches
   9: Extracting  Oracle Linux and Pataches/OEL5.7_x85-64
  10: Extracting  Oracle Linux and Pataches/OEL5.7_x85-64/V27570-01.zip
  11: Extracting  Oracle Linux and Pataches/ora10gr2
  12: Extracting  Oracle Linux and Pataches/ora10gr2/10201_companion_linux_x86_64[1].cpio.gz
  13: Extracting  Oracle Linux and Pataches/ora10gr2/10201_database_linux_x86_64[1].cpio.gz
  14: Extracting  Oracle Linux and Pataches/ora10gr2/instruction.doc
  15: Extracting  Oracle Linux and Pataches/ora10gr2/p6810189_10204_Linux-x86-64.zip
  16: Extracting  Oracle Linux and Pataches/ora10gr2/p6810189_Oracle庐 Database Patch Set Notes.htm
  17: Extracting  Oracle Linux and Pataches/ora10gr2/p6810189_Oracle庐 Database Patch Set Notes_files
  18: Extracting  Oracle Linux and Pataches/ora10gr2/p6810189_Oracle庐 Database Patch Set Notes_files/oracle.gif
  19:  
  20: Everything is Ok
  21:  
  22: Folders: 4
  23: Files: 7
  24: Size:       6403564486
  25: Compressed: 6402832490
  26: [root@gsp tmp]#