Search code examples
unixencryptioncompressionzipgunzip

unzip command ends successfully without unzipping file


There are double compressed files with extension xxx.zip.gz

On gunzip - xxx.zip file is created of size 0.25 GB
On unzip after gunzip - xxx.zip file extension does not change

Output of unzip :

Archive:  xxx.zip
  inflating: xxx.txt

also

echo $? shows 0 

so, even though zip command completed successfully and still the file remains with zip extension , any help ?

OS - SunOS 5.10


Solution

  • You're finding the xxx.txt is being created, right?

    unzip and gunzip have different "philosophies" about dealing with their archive. gunzip gets rid of the .gz file, while unzip leaves its zip file in place. So in your case, zip is working as designed.

    I think the best you can do is

     unzip -q xxx.zip && /bin/rm xxx.zip
    

    This will only delete the zip file if unzip exits without error. The -q option makes unzip quiet, so you won't get the status messages you included above.

    edit

    as you asked when zip file itself is +10 GB in size, then unzip does not succeed

    Assuming that you are certain there is enough diskspace to save the expanded orig file, then it's hard to say. How big is the expanded file? Over 2GB? SunOS5 I believe, used to have file-size limitation at 2GB, requiring a 'large-file' support to be added into kernel and utilities. I don't have access to Sun anymore so can't confirm. I think you'll find places to look with apropos largefile (assuming your $MANPATH is setup correctly).

    But the basic test for did the unzip work correctly would be something like

      if unzip "${file}" ; then
         echo "clean unzip for ${file}, deleting the archive file" >&2
         /bin/rm "${file}"
      else
         echo "error running unzip for ${file}, archive file remains in place" >&2
      fi
    

    (Or I don't understand your use case). Feel free to post another question showing ls -l xxx.zip.gz xxx.zip and other details to help reconstruct your expected workflow.

    IHTH.