Linux Tutorials - Herong's Tutorial Examples - v5.37, by Dr. Herong Yang
"zip" and "unzip" - Create and Extract ZIP Files
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