"zip" and "unzip" - Create and Extract ZIP Files

This section provides a tutorial example on how to use 'zip' command to compress multiple file and sub-directories into a ZIP file and use 'unzip' command to extract files out of a ZIP file.

If you want to backup a directory tree with many files and sub-directories, you may want to use "zip" command compress the entire directory tree into a single ZIP file. Later, you can extract the entire directory tree out of the ZIP file using the "unzip" command.

Here is what I did to create a backup of my GCC directory tree as a ZIP file.

1. Go to the parent directory where the directory tree is located. This is to ensure that only short relative pathnames are compressed into the ZIP file.

herong$ cd /home/herong

2. Create the ZIP file using the "zip -r" command.

herong$ zip -r gcc-backup.zip gcc

adding: gcc/ (stored 0%)
adding: gcc/hello.c (stored 0%)
adding: gcc/hello.cpp (deflated 3%)
adding: gcc/Makefile (deflated 26%)
adding: gcc/include/ (stored 0%)
adding: gcc/include/myheader.h (stored 0%)
adding: gcc/include/myfunc.h (deflated 13%)
adding: gcc/lib/ (stored 0%)
adding: gcc/HeaderTest.cpp (deflated 27%)
adding: gcc/MyStatic.cpp (deflated 19%)
adding: gcc/MyStatic.o (deflated 67%)
adding: gcc/libMyStatic.a (deflated 66%)
adding: gcc/MyStaticTest.cpp (deflated 26%)
adding: gcc/MyDynamic.cpp (deflated 19%)
adding: gcc/MyDynamicTest.cpp (deflated 26%)
adding: gcc/a.out (deflated 74%)
adding: gcc/hello (deflated 71%)
adding: gcc/MyDynamicTest (deflated 70%)
adding: gcc/libMyDynamic.so (deflated 71%)
adding: gcc/hello.o (deflated 66%)

3. Test the ZIP file using the "unzip -t" command.

herong$ unzip -t gcc-backup.zip

Archive:  gcc-backup.zip
    testing: gcc/                     OK
    testing: gcc/hello.c              OK
    testing: gcc/hello.cpp            OK
    testing: gcc/Makefile             OK
    testing: gcc/include/             OK
    testing: gcc/include/myheader.h   OK
    testing: gcc/include/myfunc.h     OK
    testing: gcc/lib/                 OK
    testing: gcc/HeaderTest.cpp       OK
    testing: gcc/MyStatic.cpp         OK
    testing: gcc/MyStatic.o           OK
    testing: gcc/libMyStatic.a        OK
    testing: gcc/MyStaticTest.cpp     OK
    testing: gcc/MyDynamic.cpp        OK
    testing: gcc/MyDynamicTest.cpp    OK
    testing: gcc/a.out                OK
    testing: gcc/hello                OK
    testing: gcc/MyDynamicTest        OK
    testing: gcc/libMyDynamic.so      OK
    testing: gcc/hello.o              OK
No errors detected in compressed data of gcc-backup.zip.

4. Extract all files and sub-directories from the ZIP file using the "unzip" command.

herong$ mkdir tmp
herong$ cd tmp

herong$ unzip ../gcc-backup.zip
Archive:  ../gcc-backup.zip
   creating: gcc/
 extracting: gcc/hello.c
  inflating: gcc/hello.cpp
  inflating: gcc/Makefile
   creating: gcc/include/
 extracting: gcc/include/myheader.h
  inflating: gcc/include/myfunc.h
   creating: gcc/lib/
  inflating: gcc/HeaderTest.cpp
  inflating: gcc/MyStatic.cpp
  inflating: gcc/MyStatic.o
  inflating: gcc/libMyStatic.a
  inflating: gcc/MyStaticTest.cpp
  inflating: gcc/MyDynamic.cpp
  inflating: gcc/MyDynamicTest.cpp
  inflating: gcc/a.out
  inflating: gcc/hello
  inflating: gcc/MyDynamicTest
  inflating: gcc/libMyDynamic.so
  inflating: gcc/hello.o

5. If you want to encrypt the ZIP file, you can use the "-P password" option.

herong$ cd /home/herong

herong$ zip -r -P TopSecret gcc-backup.zip gcc
...

6. If a file is encrypted in the ZIP file, the "unzip" command will prompt you for the password to decrypt the file.

herong$ unzip -t gcc-backup.zip
Archive:  gcc-backup.zip
    testing: gcc/                     OK

[gcc-backup.zip] gcc/hello.c password: TopSecret
...

Table of Contents

 About This Book

 Introduction to Linux Systems

 Process Management

Files and Directories

 "find" - Search for Files

 "more", "head" and "cat" - Read Files

 "split" and "cat" - Split and Join Files

 Truncate Log Files

 "compress/uncompress" - Compressed *.Z Files

 "gzip/gunzip" - Compressed *.gz Files

 "xz/unxz" - Compressed *.xz or *.lzma Files

 "tar -c" and "tar -x" - Create and Extract Archive Files

"zip" and "unzip" - Create and Extract ZIP Files

 "Operation not permitted" Error on macOS

 Running Apache HTTP Server (httpd) on Linux Systems

 Running Apache Tomcat on Linux Systems

 Running PHP Scripts on Linux Systems

 Running MySQL Database Server on Linux Systems

 Running Python Scripts on Linux Systems

 Conda - Environment and Package Manager

 GCC - C/C++ Compiler

 OpenJDK - Open-Source JDK

 Graphics Environments on Linux

 SquirrelMail - Webmail in PHP

 Tools and Utilities

 References

 Full Version in PDF/EPUB