Another couple of gotchas that I've found along the way:
- Maximum filesize of the operating system: On linux 2.2.x, this is a 2GB file limit. Anything above that will give you errors and a truncated file. Other OSes have other filesize limits. Check on this.
- Errors because of archive creation: A common way to create a large archive is simply concatenate gzips together (*NIX style: cat archive1.gz >> archive2.gz). If erroneous data gets thrown in here in one of the concatenation steps, it could break your unzip stream.
- Errors becuase of double zip in concatenated archive: If the above concatenation is used to create the archive, it's possible that at some point, a zip is then itself zipped. This actually increases the zipped zip's size by a few bytes for the headers, but unzipping it would then produce a zip file. This could explain your 'partially unzipped file'.
The ports of call are thus to check out your maximum os filesize (shouldn't really be a problem for AIX), your version of Zlib, and the way the archive was created.
Also make sure the partition you're unzipping on can take the data. The zip size itself shouldn't be a problem (a fair wack of my work deals with pretty big log files. On average, the gzips I work with are 170-230MB in size. And they work fine.
Hopefully this helps some,