ZIP command in Linux with examples

19 Feb, 2021
ZIP is a compression and file packaging utility for Unix. Each file is stored in single .zip {.zip-filename} file with the extension .zip.
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 zip program puts one or more compressed files into a single zip archive, along with information about the files (name, path, date, time of last modification, protection, and check information to verify file integrity). An entire directory structure can be packed into a zip archive with a single command.
Compression ratios of 2:1 to 3:1 are common for text files. zip has one compression method (deflation) and can also store files without compression. zip automatically chooses the better of the two for each file to be compressed.The program is useful for packaging a set of files for distribution; for archiving files; and for saving disk space by temporarily compressing unused files or directories.
Syntax :
zip [options] zipfile files_list

Syntax for  Creating a zip file:
$zip myfile.zip filename.txt
Extracting files from zip file 
Unzip will list, test, or extract files from a ZIP archive, commonly found on Unix systems. The default behavior (with no options) is to extract into the current directory (and sub-directories below it) all files from the specified ZIP archive.
Syntax :
$unzip myfile.zip 

Options :1. -d Option: Removes the file from the zip archive.  After creating a zip file, you can remove a file from the archive using the -d option.Suppose we have following files in my current directory are listed below:hello1.chello2.chello3.chello4.chello5.chello6.chello7.chello8.cSyntax :
$zip –d filename.zip file.txt
Command :
$zip –d myfile.zip hello7.c

After removing hello7.c from myfile.zip file, the files can be restored with unzip command
Command:
$unzip myfile.zip
$ls command
Output :
hello1.c
hello2.c
hello3.c
hello4.c
hello5.c
hello6.c
hello8.c
The hello7.c file is removed from zip file

2.-u Option: Updates the file in the zip archive. This option can be used to update the specified list of files or add new files to the existing zip file. Update an existing entry in the zip archive only if it has been modified more recently than the version already in the zip archive.Syntax:
$zip –u filename.zip file.txt
Suppose we have following files in my current directory are listed below:hello1.chello2.chello3.chello4.c
Command :
$zip –u myfile.zip hello5.c

After updating hello5.c from myfile.zip file, the files can be restored with unzip command
Command:
$unzip myfile.zip
$ls command
Output :
hello1.c
hello2.c
hello3.c
hello4.c
hello5.c
The hello5.c file is updated to the zip file

3. -m Option: Deletes the original files after zipping. Move the specified files into the zip archive actually, this deletes the target directories/files after making the specified zip archive. If a directory becomes empty after removal of the files, the directory is also removed. No deletions are done until zip has created the archive without error. This is useful for conserving disk space, but is potentially dangerous removing all input files.Syntax :
$zip –m filename.zip file.txt
Suppose we have following files in my current directory are listed below:hello1.chello2.chello3.chello4.c
Command :
$zip –m myfile.zip *.c

After this command has been executed by the terminal here is the result:
Command:
$ls command
Output :
myfile.zip
//No other files of .c(extension) has been found

4.-r Option: To zip a directory recursively, use the -r option with the zip command and it will recursively zips the files in a directory. This option helps you to zip all the files present in the specified directory.Syntax:
$zip –r filename.zip directory_name
Suppose we have following files in my current directory (docs) are listed below:unix.pdforacle.pdflinux.pdf
Command :
$zip –r mydir.zip docs
Output :
  adding: docs/            //Compressing the directory
  adding: docs/unix.pdf   // Compressing first file
  adding: docs/oracle.pdf // Compressing second file
  adding: docs/linux.pdf  //Compressing third file

5. -x Option: Exclude the files in creating the zip. 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.Syntax :
$zip –x filename.zip file_to_be_excluded
Suppose we have following files in my current directory are listed below:hello1.chello2.chello3.chello4.c
Command :
$zip –x myfile.zip hello3.c

This command on execution will compress all the files except hello3.c
Command:
$ls command
Output :
myfile.zip //compressed file
hello3.c   //this file has been excluded while compressing

6.-v Option: Verbose mode or print diagnostic version info. Normally, when applied to real operations, this option enables the display of a progress indicator during compression and requests verbose diagnostic info about zip file structure oddities.When -v is the only command line argument, and either stdin or stdout is not redirected to a file, a diagnostic screen is printed. In addition to the help screen header with program name, version, and release date, some pointers to the Info-ZIP home and distribution sites are given. Then, it shows information about the target environment (compiler type and version, OS version, compilation date and the enabled optional features used to create the zip executable.Syntax :
$zip –v filename.zip file1.txt
Suppose we have following files in my current directory are listed below:hello1.chello2.chello3.chello4.c
Command
$zip -v file1.zip *.c
Output :
adding: hello1.c    (in=0) (out=0) (stored 0%)
  adding: hello2.c    (in=0) (out=0) (stored 0%)
  adding: hello3.c    (in=0) (out=0) (stored 0%)
  adding: hello4.c    (in=0) (out=0) (stored 0%)
total bytes=0, compressed=0 -> 0% savings

Linux Tutorials | Compressing and Archiving Files in Linux | tar and zip commands | GeeksforGeeks - YouTubeGeeksforGeeks529K subscribersLinux Tutorials | Compressing and Archiving Files in Linux | tar and zip commands | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.More videosMore videosYou're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:003:12 / 7:08•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=KucqplDh7LI" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>This article is contributed by Mohak Agrawal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
linux-command
Linux-file-commands
Linux-Unix
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
curl command in Linux with Examples
Tail command in Linux with examples
Conditional Statements | Shell Script
TCP Server-Client implementation in C
Docker - COPY Instruction
scp command in Linux with Examples
UDP Server-Client implementation in C
echo command in Linux with Examples
Cat command in Linux with examples
touch command in Linux with Examples