Oct 7, 2023 5 min read

How to Zip Files and Directories on Linux

Zip Files and Directories on Linux with our step-by-step tutorial. It is a compressed folder containing one or more files or directories.

Zip Files and Directories on Linux
Table of Contents

Introduction

Before we begin talking about how to zip files and directories on Linux, let's briefly understand – What is Zip File?

A zip file is a compressed folder containing one or more files or directories. It reduces the overall file size to save storage space and enable faster file transfer. Zip files are commonly used for packaging and distributing multiple files or for compressing large files into a more manageable size.

This file format is compatible with various operating systems and can be easily opened with popular archive software. With its ability to efficiently compress files, zip files have become an essential tool for organizing and sharing large amounts of data.

In this tutorial, you will zip files and directories on Linux. We will also address a few FAQs on how to zip files and directories on Linux.

Advantages of Zip File

  1. Efficient Compression: Zip files significantly reduce file sizes, saving storage space and enabling faster transmission.
  2. File Bundling: Multiple files or directories can be easily bundled together into a single zip file, making it convenient for organization and sharing.
  3. Simplified File Transfer: With reduced file sizes, zip files can be quickly transferred over the internet or via email.
  4. Data Integrity: Zip files support error-checking mechanisms, ensuring that files remain intact during compression, decompression, and transmission.
  5. Cross-Platform Compatibility: Zip files are compatible with various operating systems and can be opened using popular archive software.

zip Command

zip is a command-line tool that aids in the creation of Zip archives.

The syntax for the zip command is as follows:

zip OPTIONS ARCHIVE_NAME FILES

A user must have write permissions on a directory in order to build a Zip archive in that directory.

In the Linux approach, zip files do not enable ownership information. The user who runs the command owns the extracted files. To maintain file ownership and permissions intact, use the tar command.

Most Linux distributions do not include the zip program by default, but you may easily install it using your distribution's package management.

Install zip on Ubuntu and Debian

sudo apt install zip

Install zip on CentOS and Fedora

sudo yum install zip

How to ZIP Files and Directories

To zip one or more files, separate the files to be included in the archive by a space, as illustrated below:

zip archivename.zip filename1 filename2 filename3
Output

adding: filename1 (deflated 63%)
adding: filename2 (stored 0%)
adding: filename3 (deflated 38%)

The zip command publishes the names of the files that have been added to the archive as well as the compression method by default.

Unless the archive name contains a dot, the extension is automatically appended if the archive name does not conclude with .zip. zip archivename .zip filename creates the same archive as zip archivename filename.

To suppress the output of the zip command, use the -q option:

zip -q archivename.zip filename1 filename2 filename3

Creating a zip archive of a directory that includes the content of subdirectories is common. The -r option allows you to recursively traverse the entire directory structure:

zip -r archivename.zip directory_name

In the same archive, you can also add numerous files and directories:

zip -r archivename.zip directory_name1 directory_name2 file1 file1

Compression Methods and Levels

Deflate is Zip's default compression algorithm. If a file cannot be compressed, the zip utility just stores it in the archive without compressing it using the store method. In most Linux distributions, the zip software supports the bzip2 compression method.

Use the -Z option to select a compression method.

zip -r -Z bzip2 archivename.zip directory_name
Output

...
adding: sub_dir/ (stored 0%)
adding: sub_dir/file1 (bzipped 52%)
adding: sub_dir/file2 (bzipped 79%)

The zip command lets you define a compression level from 0 to 9 by providing a number prefixed with a dash. The compression level is set to -6 by default. When -0 is specified, all files are saved without compression. -9 forces the zip command to perform the best compression possible for all files.

If you wanted to use compression level -9, for example, you would type:

zip -9 -r archivename.zip directory_name

The zip operation becomes more CPU-intensive when the compression level is increased, and it takes longer to complete.

Creating a Password Protected ZIP file

If you have sensitive data that has to be stored in the archive, use the -e option to encrypt it:

zip -e  archivename.zip directory_name

Using the following command, the archive password must be entered and verified:

Output

Enter password:
Verify password:

Creating Split Zip File

Assume you want to upload the Zip archive to a file hosting provider with a 1GB upload limit, and your Zip archive is 5GB in size.

The -s option, followed by a size, can be used to create a new split Zip file. k (kilobytes), m (megabytes), g (gigabytes), or t (terabytes) can be used as the multiplier (terabytes).

zip -s 1g -r archivename.zip directory_name

After a set hits the stated size limit, the operation above will keep producing new archives in it.

Output

archivename.zip
archivename.z01
archivename.z02
archivename.z03
archivename.z04

zip command Examples

Create an archivename.zip file that contains all of the files in the current directory.

zip archivename *

As before, including secret files (those beginning with a dot):

zip archivename .* *

Create an archivename.zip file that contains all MP3 files in the current directory without compressing them.

zip -0 archivename *.mp3

FAQs to Zip Files and Directories on Linux

How do I extract a zip file on Linux? 

To extract a zip file, use the command "unzip" followed by the name of the zip file you want to extract. Example: unzip archive.zip

Can I password protect a zip file? 

Yes, you can add a password to a zip file for added security using the "-P" option when creating the zip file. Example: zip -P password archive.zip file1.txt

How can I list the contents of a zip file without extracting it? 

Use the command "unzip -l" followed by the zip file name to list the contents of a zip file without extracting it. Example: unzip -l archive.zip

How do I update an existing zip file with new files? 

To update an existing zip file, use the command "zip" with the "-u" option followed by the zip file and the files or directories you want to add. Example: zip -u archive.zip newfile.txt

How can I split a large zip file into smaller parts?

 To split a large zip file, use the command "split" followed by the size and name of the output parts. Example: split -b 100M archive.zip archive.zip.part

How do I merge split zip files back into a single file? 

To merge split zip files, use the command "cat" followed by the names of the parts and redirect the output to a new zip file. Example: cat archive.zip.part* > merged.zip

Are zip files compatible with other operating systems? 

Yes, zip files are widely compatible across different operating systems, including Linux, Windows, and macOS. They can be opened and extracted using various archive software available on each platform.

Conclusion

The zip command in Linux can be used to build Zip archives.

The unzip command can be used to extract a ZIP archive on a Linux system.

Visit the Zip Man page for more information on the zip command.

If you have any queries, please leave a comment below and we’ll be happy to respond to them.

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to DevOps Tutorials - VegaStack.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.