Zip folder recursively linux

ZIP command in Linux with examples

ZIP is a compression and file packaging utility for Unix. Each file is stored in a single .zip file with the extension .zip.

  • Zip is used to compress files to reduce file size and is also used as a file package utility. Zip is available in many operating systems like Unix, Linux, windows, etc.
  • If you have limited bandwidth between two servers and want to transfer the files faster, then zip the files and transfer them.
  • 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 is 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, archiving files, and for saving disk space by temporarily compressing unused files or directories.
zip [options] [file_name.zip] [files_names]

The syntax for Creating a zip file:

zip [file_name.zip] [file_name]

Options in ‘Zip’ command in Linux

(Remove files from the archive):
This option allows you to remove specific files from a zip archive. After creating a zip file, you can selectively remove files using the -d option.

zip -d [file_name.zip] [files_name]

(Update files in the archive):
The -u option enables you to update files in an existing zip archive. You can specify a list of files to update or add new files to the archive. The update occurs only if the modified version is more recent than the one already in the zip archive.

zip -u [file_name.zip] [files_name]

(Move files into the archive):
With the -m option, you can move specified files into the zip archive. This operation also deletes the target directories or files after creating the zip archive. If a directory becomes empty after removing the files, it is also deleted. Use this option with caution, as it permanently removes the input files.

zip -m [file_name.zip] [files_name]

(Recursively zip a directory):
The -r option allows you to recursively zip a directory and its files. It includes all the files present in the specified directory and its subdirectories in the resulting zip archive.

zip -r [file_name.zip] [directory_name]

(Exclude files from the zip):
Using the -x option, you can exclude specific files from being included in the zip archive. This is useful when you want to zip all files in a directory but want to exclude certain unwanted files.

zip -r [file_name.zip] -x [directory_name]

(Verbose mode):
The -v option enables the verbose mode, providing diagnostic information during compression. It displays a progress indicator and offers verbose diagnostic information about the zip file structure. When used alone, it prints a diagnostic screen along with details about the zip executable and the target environment.

zip -v [file_name.zip] [file_name]

Examples of ‘Zip’ command in Linux

1) `unzip` command in ‘Zip’

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.

Читайте также:  Linux citrix receiver install

Suppose we have a zip file “name = jayesh_gfg.zip” and we have three text files inside it “name = a.txt, b.txt and c.txt”. we have to unzip it in the current directory.

Syntax and Output:

Here, we used `ls` command to display all the files that has be unzipped from the zipped file.

Unzip a file

2) `-d` Option in Zip command

zip -d [file_name.zip] [files_name]

Suppose we have zip file “name = myfile.zip” and have eight files in it “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello7.c, hello8.c “.

We have to delete hello7.c, then…

Syntax and Output:

  1. First, we have deleted `hello7.c` successfully.
  2. Then we used “sudo unzip myfile.zip” to unzip the file for confirming that our file is deleted.
  3. Then we used “ls” to see the file that had been unzipped.

delete a file from zip file

3) `-u` option in Zip command

zip -u [file_name.zip] [files_name]

Suppose we have zip file “name= myfile.zip” and we have to add a new file “name = hello9.c” in it.

Syntax and Output:

we have used `vi` to see that our file is added successfully.

add a file in zip file

4) `-m` option in Zip command

zip -m [file_name.zip] [files_name]

Suppose we have zip file “name= myfile.zip” and we have to move files “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello8.c, hello9.c ” Present in current directory to zip file.

Syntax and Output:

we have used `ls` to see that our files are moved successfully.

To check files inside “myfile.zip” we can type “vi myfile.zip”.

moved files inside zip file

moved files inside zip file

5) `-r` option in Zip command

zip -r [file_name.zip] [directory_name]

Suppose we have zip file “name= myfile.zip” and we have to move files “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello7.c, hello8.c ” present in directory “name= jkj_gfg” to zip file recursively.

Syntax and Output:

To check files inside “myfile.zip” we can type “vi myfile.zip”.

copy file recursively form a directory to a zip file

copy file recursively form a directory to a zip file

6) `-x` option in Zip command

zip -r [file_name.zip] -x [directory_name]

Suppose we have zip file “name= myfile.zip” and we have to move files “name = hello1.c, hello2.c, hello3.c, hello4.c, hello5.c, hello6.c, hello7.c, hello8.c ” present in directory “name= jkj_gfg” to zip file recursively.

Syntax and Output:

Here, the -r option is used to recursively add all files and directories in the current directory to the archive, and the. specifies the current directory as the source directory. The -x a.txt option excludes the file “a.txt” from the archive.

To check files inside “myfile.zip” we can type “vi myfile.zip”.

file copied recursively except one file we mentioned

file copied recursively except one file we mentioned.

7) `-v` options in Zip command

zip -v [file_name.zip] [file_name]

If we want to know about all the files with extension “.c”

Читайте также:  Linux посмотреть пароль samba

Syntax and Output:

checking information about all files inside zip

checking information about all files inside zip

Most Frequently asked Question about `zip` command in Linux

1) How do I create a zip file in Linux?

By using `zip` command itself.

Example:

We are creating a zip file named = `gfg.zip` containing the files `first.txt` and `second.txt`:

zip gfg.zip first.txt second.txt

2) How do I extract a zip file in linux?

By using `unzip` command.

Example:

we are extracting file name = `gfg.zip`:

3) How do i exclude specific files from a zip archive?

By using `-x` option in zip command.

Example:

To exclude specific files from a zip archive, we can use the -x option followed by the name of the file you want to exclude. For example, the following command creates a zip file named `gfg.zip` containing all files in the current directory except for `third.txt`:

4) How do I include hidden files in a zip archive?

By just using `-r` option, which is copying every file recursively. For example, our zip file name is ‘gfg.zip` and we want to archive hidden files of the current directory.

5) How do I password-protect a zip archive?

By using option `-P` followed by the password we want to use. For example, our zip file name = `gfg.zip` which contain file name = `first.txt` and `second.txt`. And we also used `-e` to encrypt our zip archive, so whenever a user extracts the archive file, a prompt will come to enter the password.

zip -e -P [my_password] gfg.zip first.txt second.txt

Conclusion

Zip command in Linux is used to compress files and packaging them into a single .zip archive, which overall helps us in saving disk space and making it easy to handle big data. We have discussed various options used in zip command like -d, -u, -m, -r, -x, and -v. Overall, it is a recommended tool for Linux users to efficiently manage their files.

Источник

zip all files and folders recursively in bash

I am working on a project, where compilation of the project involves, zipping up various files and folders and subfolders (html/css/js) selectively. Working on the windows platform, and I could continue to just use the CTRL+A and then SHIFT-click to unselect, but it does get a little tedious. I am working with cygwin, so I was wondering if it is possible to issue a command to zip selected files/folders recursively whilst excluding others, in one command? I already have zip command installed, but I seem to be zipping up the current zip file too and the .svn file too. I would like this to be incorporated into a shell script if possible, so the simpler the better.

2 Answers 2

After reading the man pages, I think the solution that I was looking for is as follws:

  • needs to recurse directories (-r),
  • needs to exclude certail files/directories (-x)
  • It works in the current directory, but the . can be replaced with the path of any directory zip -x directories_to_exclude -r codebase_latest.zip .

I have incorporated this into a short shell script that deletes files, tidy up some code, and then zips up all of the files as needed.

You should read man page of zip command:

-R --recurse-patterns Travel the directory structure recursively starting at the current directory; for example: zip -R foo "*.c" In this case, all the files matching *.c in the tree starting at the current directory are stored into a zip archive named foo.zip. Note that *.c will match file.c, a/file.c and a/b/.c. More than one pattern can be listed as separate arguments. Note for PKZIP users: the equivalent command is pkzip -rP foo *.c Patterns are relative file paths as they appear in the archive, or will after zipping, and can have optional wildcards in them. For example, given the cur‐ rent directory is foo and under it are directories foo1 and foo2 and in foo1 is the file bar.c, zip -R foo/* will zip up foo, foo/foo1, foo/foo1/bar.c, and foo/foo2. zip -R */bar.c will zip up foo/foo1/bar.c. See the note for -r on escaping wildcards. 

Источник

Читайте также:  Linux как создать swap после установки

How Do I Zip All Files In A Directory In Linux?

Zip archives refer to container archives that contain one or more compressed files and directories. Zip files are cross-platform, allowing you to create zip archives in Windows, Linux, and macOS using various utilities. In addition, zip archive files take less space, making them easier to transfer and store.

In Linux, we use the zip archive utility to create zip archives. Throughout this tutorial, we will focus on how to go about creating zip archives in Linux using the zip utility.

Install Zip

Depending on your Linux distribution, you will need to install the zip utility. Since all Linux distributions support it, you can use the package manager to install it.

For Debian/Ubuntu

On Debian, use the command:

For REHL/CentOS

On CentOS and REHL family, use the command:

The Zip Command

The zip command is simple to use. The general syntax for the command is:

To create a zip archive of more than one file, pass them in a list (separated by space) after the zip filename. It is also good to ensure you have to write permissions in the directory you are creating the zip file.

How to Zip Files In Linux

We can zip files in a directory as:

The command above displays the name of the file added to the archive and the compression method.

Zip utility automatically adds a .zip extension to the archive filename—if not explicitly specified.

How to Compress Zip Directories In Linux

You can compress directories and the corresponding sub-directories by using the -r flag. The -r flag will tell zip to traverse the entire directory recursively.

For example, consider the /var/log directory. To create an archive of all the files and directories, we use the command:

To suppress the output from the compression process, use the -q for quiet mode. The command creates a zip archive of the specified files with no output.

How to Zip all Files in a Directory In Linux

What if you want to zip all files in a directory? In that case, we use wildcard expressions to do this.

The above command adds all the files and directories in the specified path and adds them to the zip archive.

How to Zip All Files, Including Hidden Files

To add even hidden files to a zip archive, use the wildcard (.* *). The command for that is:

Conclusion

As shown in this tutorial, Linux allows you to create zip archives. You can use any archive utility such as WinRar, 7zip, unzip; to unarchive the files.

About the author

John Otieno

My name is John and am a fellow geek like you. I am passionate about all things computers from Hardware, Operating systems to Programming. My dream is to share my knowledge with the world and help out fellow geeks. Follow my content by subscribing to LinuxHint mailing list

Источник

Оцените статью
Adblock
detector