In this post we will see how you can use zip command in Linux to compress directories and files and unzip them. zip is also very useful if you have to further uncompress the files on windows machine as by default windows allows you to open zip files without installing any extra program.
First let's install zip. Below we will show installation instruction for both Ubuntu and Redhat linux/CentOS.
Ubuntu :
Update the package repo:
root@CloudVedas:~# sudo apt-get update
Now let's install zip and unzip packages:
sudo apt-get install zip unzip -y
RHEL/CentOS:
Update the package repo:
root@CloudVedas:~# sudo yum makecache
Install the zip and unzip packages
root@CloudVedas:~# sudo yum install zip unzip
Once the zip and unzip packages are installed we can now see their usage.
The basic syntax of the zip command is below:
zip -r <output_file>.zip <dir1> <dir2> ... <dirn>
Let's see some examples :
We will zip three directories
root@CloudVedas:~# zip -r finaldir.zip dir1 dir2 dir3
adding: dir1/ (stored 0%)
adding: dir1/test11 (stored 0%)
adding: dir1/test13 (stored 0%)
adding: dir1/tet12 (stored 0%)
adding: dir2/ (stored 0%)
adding: dir2/test21 (stored 0%)
adding: dir2/test22 (stored 0%)
adding: dir2/test23 (stored 0%)
adding: dir3/ (stored 0%)
adding: dir3/test31 (stored 0%)
adding: dir3/test32 (stored 0%)
adding: dir3/test33 (stored 0%)
root@CloudVedas:~#
When we list the contents we can see our zipped file finaldir.zip .
root@CloudVedas:~# ls -lrth
total 4.0K
drwxr-xr-x 1 root root 4.0K Aug 29 13:54 dir1
drwxr-xr-x 1 root root 4.0K Aug 29 13:54 dir2
drwxr-xr-x 1 root root 4.0K Aug 29 13:54 dir3
-rw-r--r-- 1 root root 1.8K Aug 29 13:55 finaldir.zip
root@CloudVedas:~#
You can also zip all the directories in the present working directory using this simple bash script.
for dir in $(ls -d */); do zip script_archive.zip $dir; done
View contents of a zip file
If you want to see the contents of a zip file without unzipping it you can use either vi or vim .
root@CloudVedas:~# vim finaldir.zip
or
root@CloudVedas:~# vi finaldir.zip
With the above commands you can easily see the list of files and directories inside the zip.
unzip
Now let's see how you can unzip a file. Be careful when you are unzipping a file with out any extra options as it will overwrite the existing contents if same name exist. Best is to unzip the file in a different directory and then copy the required files and directories as needed in the destination folder.
root@CloudVedas:~/unziptest# unzip finaldir.zip
Archive: finaldir.zip
creating: dir1/
extracting: dir1/test11
extracting: dir1/test13
extracting: dir1/tet12
creating: dir2/
extracting: dir2/test21
extracting: dir2/test22
extracting: dir2/test23
creating: dir3/
extracting: dir3/test31
extracting: dir3/test32
extracting: dir3/test33
root@CloudVedas:~/unziptest# ls
dir1 dir2 dir3 finaldir.zip
root@CloudVedas:~/unziptest#
If you want to see other useful options on unzip you can use below command
unzip -hh
So above we have seen how you can use zip and unzip in Linux. zip is a good utility for smaller files and directories but if you need better compression you should use tar.gz. Check out our post on most useful tar command examples if you want to know more about tar.gz and tar.bz2 or other compression methods in Linux.
If you want to transfer this file out of the Linux server check our post on how to transfer files to and from linux .
Do let us know in comments section if you have any query or suggestion about this post.