gzip and tar
gzip is used to compress files and tar is used to archive a file system. Though these two are different commands ,using them together can accomplish a variety of tasks which seem to be
much simpler than when running them separately. Here we will also discuss about the combined use of tar and cd commands.
First we will discuss with examples the individual command usages of gzip and tar and later use them in combination.
gzip
Example 1)
gzip is a compression utility that uses Huffman coding to compress files and save them in .gz format . The .gz file occupies lesser space than the original file. We will not discuss about the .gz file format , but only show how the command can be used along with its options.
To compress a file stake-holder.csv ,
/home/gr-adm $ ls –lrt stake-holder.csv*
-rw-r--r-- 1 gr-adm Administ 56344 Dec 16 14:37 greenlife.txt
/home/gr-adm$ gzip file stake-holder.csv
/home/gr-adm$ l s -lrt stake-holder.csv*
-rw-r--r-- 1 kaushik Administ 20758 Dec 16 14:37 greenlife.txt.gz
Example 2)
If you want to retain the original file even after compression or want the .gz file to have a different name, use gzip –c.
To compress the file stake-holder.csv and save the .gz file in some other directory,
/home/gr-adm$ gzip -c stake-holder.csv >/backup/stakes/ stake-holder.csv.gz.
You can also append the compressed file into an existing .gz file.
gzip -c stake-holder.csv >>/backup/stakes/Old-stake-holder.csv.gz
Here , Old-stake-holder.csv.gz can be a pre existing .gz file or a new file with that name will be created.
Example 3)
To decompress the .gz file use gunzip <filename.gz>,
/home/gr-adm$ gunzip /backup/stakes/stake-holder.csv.gz
This command will decompress the file stake-holder.csv.gz and places the original file
stake-holder.csv in /backup/stakes/ itself.
Example 4)
To view the contents of the file without completely decompressing the file , use gzip –dc.
Use pg command to view it pagewise..
/home/gr-adm$ gzip -dc stake-holder.csv.gz | pg
A premji, wipro,67
N R murthy,Infosys,65
N Chandra,TCS,46
...
..
You can redirect the output into another file,
For eg to redirect first 5 lines of the file stake-holder.csv.gz ,
gzip –dc stake-holder.csv.gz | head -5 >stake-holder-five.csv.
tar.
tar is a short form for tape archive. It can create a single file with the contents of a directory structure in one path or extract a file into directory structure in another path.
Example1)
To create a tar file of a directory structure and to view the progress of tar use,
/home/gr-adm$ tar -cvf /archives/archive2/data-history.tar data/notes
a data/notes/Nov-10/exceptions.txt 200 bytes
a data/notes/Nov-12/promotions.csv 123 bytes
a data/notes/N0v-13/oracle-log/ora-errors.log 456 bytes
a data/notes/tea-time.in 2076 bytes
a data/notes/network/virtual-ips.bmp 1290bytes
a data/notes/levy.list 87bytes
/home/gr-adm $
This creates an archive file data-history.tar in the path /archives/archive2 which contains the directory /home/notes and all its files and directory structure.
Example2)
To extract the contents of the archive file into a different location , first change your working directory to the location where you wish to extract the file, then extract and view the progress by running tar with –xvf switch.
/home/gr-adm$ cd /base-app/archive
/home/gr-adm$ tar -xvf /archives/archive2/data-history.tar
x data/notes/Nov-10/exceptions.txt 200 bytes
x data/notes/Nov-12/promotions.csv 123 bytes
x data/notes/N0v-13/oracle-log/ora-errors.log 456 bytes
x data/notes/tea-time.in
x data/notes/network/virtual-ips.bmp
x data/notes/levy.list
/home/gr-adm $
Example3)
Instead of giving entire directory name as a parameter to create a tar file, a list of files which care to be archived can be can be passed to tar with –L option.
A file containing the list of files to take tar is as shown.
/home/gr-adm$ cat to-tar-list
data/notes/Nov-10/exceptions.txt
data/notes/N0v-13/oracle-log/ora-errors.log
data/notes/levy.list
Now to create an archive of only these specific files ,use tar in the following manner.
/home/gr-adm$ tar -cvf /archives/archive2/data-specific.tar -L to-tar-list
a data/notes/Nov-10/exceptions.txt 200 bytes
a data/notes/N0v-13/oracle-log/ora-errors.log 456 bytes
a data/notes/levy.list 87 bytes
Example4)
Sometimes you may need to exclude files from the tar archive. To do this place the files and directories to be excluded in a list file and then use tar –X <exclude-list>.
/home/gr-adm$ cat /home/fiuser/excl-list
data/notes/Nov-10/exceptions.txt
data/notes/Nov-12/promotions.csv
data/notes/N0v-13/oracle-log/ora-errors.log
/home/gr-adm$ tar -X /home/fiuser/excl-list -cvf /archives/data-specific2 .tar data/notes
a data/notes/tea-time.in 2076 bytes
a data/notes/network/virtual-ips.bmp 1290bytes
a data/notes/levy.list 87bytes
Example5)
The contents of the tar file cannot be viewed directly by cat or more , but to view the details of the files and directories contained in the tar file ,use tar –tvf
/home/gr-adm$ tar -tvf /archives/data-specific2 .tar
-rw-r--r-- gr-adm 2076 2011-12-16 15:52:55 data/notes/tea-time.in
-rw-r--r-- gr-adm 1290 2011-12-30 22:44:59 data/notes/network/virtual-ips.bmp
-rw-r--r-- gr-adm 87 2011-12-30 22:45:48 data/notes/levy.list
Now that we have gone through tar and gzip individually in detail, let us discuss with examples the use of combined forces of tar and cd command.
· to take the tar of data/notes directory and untar the contents in /archives/archive2
tar cvf – data/notes | (cd /archives/archive2;tar xvf - )
‘ –‘ refers to the console .so it means you are passing the output of tar -cvf to tar –xvf and changing your path to /archives/archive2.
· to take the tar of local directory data/notes and untar the contents in a directory /archives/archive2 of remote machine 10.198.150.45
tar cvf - data/notes | rsh 10.198.150.45 -l remuser "cd /archives/archive2;tar xvf -;"
· to take the tar of files in list file tar_list_1 and untar in /archives/archive2
tar cvf - `cat tar_list_1` | (cd /archives/archive2;tar xvf - )
· to take the tar of files in a local list file tar_list_1 and untar in /archives/archive2 of a remote machine 10.198.150.45
tar cvf - `cat tar_list_1` | rsh 10.198.150.45 - l remuser "cd /archives/archive2;tar xvf -"
· to take the tar of data/notes directory excluding those in excl_list_tar and untar its contents in /archives/archive2
tar –X excl_list_tar cvf - data/notes | (cd /archives/archive2;tar xvf -)
Finally we will discuss with examples the combined use of gzip and tar.
· to gunzip a zipped tar file data_archive.tar.gz and untar It in /archives/archive2 .
gzip -dc data_archive.tar.gz - | (cd /archives/archive2;tar xvf -)
· to gunzip a local zipped tar file data_archive.tar.gz and untar it in /archives/archive2 of a remote machine 10.198.150.45
gzip -dc data_archive.tar.gz - | rsh 10.198.150.45 -l fnsonlad "cd /archives/archive2;tar xvf –“
gzip -dc data_archive.tar.gz - | rsh 10.198.150.45 -l fnsonlad "cd /archives/archive2;tar xvf –“
· To view the contents of a zipped tar file without unzipping it, page wise
gzip -dc data_archive.tar.gz - | tar tvf - |pg
Your information is amazing. If you want to know that how to zip a directory in Unix then
ReplyDeletevisit this link for more information;
how to zip a directory in Unix