LINUX

How do you zip/unzip on the unix command line

Trying to zip/unzip the unix command:

  • you can simply use the zip and unzip commands like,

To compress:

bash code
zip squash.zip file1 file2 file3

To zip a directory

bash code
zip -r squash.zip dir1

To uncompress:

bash code
unzip squash.zip

this unzips it in your current working directory.

  • Use tar to create an uncompressed archive and either gzip or bzip2 to compress that archive.
  • The corresponding gunzip and bunzip2 commands can be used to uncompress said archive, or you can just use flags on the tar command to perform the uncompression.
  • If you don’t have zip and unzip packages installed and you have java, you can use jar to unzip:
bash code
jar -xf file.zip 
  • You can zip files up (in compressed format) with the GNU tar program:

Example:

bash code
tar -zcvf myfile.tgz 

where

  • -c means “create”
  • -v means “verbose” (sometimes bothersome and slowing down…)
  • -z means “use (GNU)zip”
  • -f XYZ declares the name of the output file.
  • To unzip that file, use:
bash code
           tar -zxvf myfile.tgz 
  • That you have a tar capable of doing the compression as well as combining of files into one.
  • If not, you can just use tar cvf followed by gzip (again, if available) for compression and gunzip followed by tar xvf.

where

  • x means “eXtract”
  • -v means “verbose” (sometimes bothersome and slowing down…)
  • -z means “use (GNU)zip”
  • -f XYZ declares the name of the output file.

Zip Command Examples in Unix / Linux

  • zip is used to compress the files to reduce file size and also used as file package utility.
  • zip is available in many operating systems like unix, linux, windows etc.
  • If you have a limited bandwidth between two servers and want to transfer the files faster, then zip the files and transfer.
  • The syntax of zip command is:
bash code
Zip [options] zipfile files_list 

 Zip Command Examples:

  • The files in my current directory are listed below:
bash code
docs/linux.pdf docs/oracle.pdf docs/unix.pdf linux-virtual-server.bat unix-server.dat 
  • Here docs is a directory which contains the files linux.pdf, unix.pdf and oracle.pdf.
READ  UNIX - LINUX - Zip all files in directory

The options of zip command are:

  • d : Removes the file from the zip archive
  • -u : Updates the file in the zip archive
  • -m : Deletes the original files after zipping.
  • -r : Recursively zips the files in a directory
  • -x : Exclude the files in creating the zip
  • -v : verbose mode
  • -1 : Compresses the files faster
  • -9 : Compresses the files better
  • -f : freshen only changed files.

zipfile     : creates the zip file with name as zipfile.zip
files_list : list of files to be zipped.

Examples for how to use zip command ,

1. Creating a zip file

The zip command in unix or linux system creates an archive with the specified files. This is shown below:

bash code
            >zip archive linux-virtual-server.bat unix-server.dat
             adding: linux-virtual-server.bat (deflated 80%) 
             adding: unix-server.dat (deflated 80%)
             > ls 
             wikitechy.zip docs linux-virtual-server.bat unix-server.dat 
  • The above command creates the zip file with name wikitechy.zip

2. Extracting files from zip

To extract files from the zip, use the unzip command in unix system. This is shown below:

bash code
             >unzip archive.zip 
             Archive: archive.zip
              inflating: linux-virtual-server.bat
             inflating: unix-server.dat
               > ls
              archive.zip linux-virtual-server.bat unix-server.dat 

3. Removing file from a zip file

  • After creating a zip file, you can remove a file from the archive using the -d option.
  • To remove the file unix-server.dat from the archive, run the below zip command:
bash code
zip -d archive.zip unix-server.dat
              deleting: unix-server.dat 
            > unzip archive.zip 
            Archive: archive.zip 
             inflating: linux-virtual-server.bat

4. Update existing zip file

  • You can update the files in already created zip file. If any of the files are modified after zipping, you can fresh the zip file with only those modified files using the -f option.
bash code
                   zip -f archive.zip
                   freshening: linux-virtual-server.bat (stored 0%) 
  • Another way is using the -u option. This option can be used to update the specified list of files or add new files to the existing zip file.
bash code
zip -u archive.zip linux-virtual-server.bat temp 
                     updating: linux-virtual-server.bat (deflated 79%) 
                      adding: temp (stored 0%) 

5. Recursively zip files in directory.

  • To zip a directory recursively, use the -r option with the zip command. This example is shown below
bash code
>zip -r dir_archive docs
                          adding: docs/ (stored 0%) 
                          adding: docs/unix.pdf (stored 0%)
                          adding: docs/oracle.pdf (stored 0%) 
                          adding: docs/linux.pdf (stored 0%) 

6. Excluding files in zipping

  • Let say you are zipping all the files in the current directory and want to exclude some unwanted files. You can exclude these unwanted files using the -x option.
bash code
zip exclude_archive * -x linux-virtual-server.bat 
  • The above command zips all the files in the current directory except the file linux-virtual-server.bat
READ  [ Solved - 3 Answers ] LINUX - How can you get your external IP address in a shell script

7. Faster compressing

  • You can compress the files very fast using the -1 option with zip command. An example is shown below with and without using fast compression.
bash code
>zip -1 fast_archive linux-virtual-server.bat 
                       adding: linux-virtual-server.bat (deflated 79%) 
                       >zip normal_archive linux-virtual-server.bat
                         adding: linux-virtual-server.bat (deflated 80%)
  • If you use fast compression, the archive file created will occupy more space (size) when compared to normal compression.

8. Better compression.

  • To reduce more amount of size the files occupied, you can use the -9 option with the zip command. This gives a better compression.
bash code
>zip -9 better_archive linux-virtual-server.bat
                     adding: linux-virtual-server.bat (deflated 81%) 

About the author

Venkatesan Prabu

Venkatesan Prabu

Wikitechy Founder, Author, International Speaker, and Job Consultant. My role as the CEO of Wikitechy, I help businesses build their next generation digital platforms and help with their product innovation and growth strategy. I'm a frequent speaker at tech conferences and events.

Add Comment

Click here to post a comment