Home
Back To Top
Home
On Unix platform, tar
command is the primary archiving utility. Understanding various tar command
options will help you master the archive file manipulation.
In this article, let us review various tar
examples including how to create tar archives (with gzip and bzip compression),
extract a single file or directory, view tar archive contents, validate the
integrity of tar archives, finding out the difference between tar archive and
file system, estimate the size of the tar archives before creating it etc.,
1. Creating an archive
using tar command
Creating an
uncompressed tar archive using option cvf. This is the basic command to create
a tar archive.
$ tar -cvf
archive_name.tar dirname/
Where,
c – Create a
new archive
v – Verbosely
list files which are processed.
f – Following
is the archive file name
Creating a tar gzipped archive using option
cvzf
The above tar cvf option, does not provide
any compression. To use a gzip compression on the tar archive, use the z option
as shown below.
$ tar -cvzf
archive_name.tar.gz dirname/
Where,
z - filter
the archive through gzip
Note: .tgz is same as
.tar.gz
Note: We like to keep the ‘cvf’ (or tvf, or
xvf) option unchanged for all archive creation (or view, or extract) and add
additional option at the end, which is easier to remember. i.e cvf for archive
creation, cvfz for compressed gzip archive creation, cvfj for compressed bzip2
archive creation etc., For this method to work properly, don’t give – in front
of the options.
Creating a bzipped tar
archive using option cvjf
$ tar -cvfj
archive_name.tar.bz2 dirname/
Where,
j – filter the archive through bzip2
gzip vs bzip2
bzip2 takes more time
to compress and decompress than gzip.
bzip2 archival size is
less than gzip.
Note: .tbz and .tb2 is same as .tar.bz2
2. Extracting (untar) an archive using tar
command
Extract a tar file
using option x as shown below:
$ tar -xvf
archive_name.tar
Where,
* x – extract files from archive
Extract a gzipped tar archive ( *.tar.gz )
using option xvzf. Use the option z for uncompressing a gzip tar archive.
$ tar -xvfz
archive_name.tar.gz
Extracting a bzipped tar archive ( *.tar.bz2
) using option xvjf. Use the option j for uncompressing a bzip2 tar archive.
$ tar -xvfj
archive_name.tar.bz2
Note: In all the above
commands v is optional, which lists the file being processed.
3. Listing an archive using tar command
View the tar archive
file content without extracting using option tvf. You can view the *.tar file
content before extracting as shown below.
$ tar -tvf
archive_name.tar
View the *.tar.gz file content without
extracting using option tvzf. You can view the *.tar.gz file content before
extracting as shown below.
$ tar -tvfz
archive_name.tar.gz
View the *.tar.bz2 file content without
extracting using option tvjf. You can view the *.tar.bz2 file content before
extracting as shown below.
$ tar -tvfj
archive_name.tar.bz2
4. Listing out the tar file content with
less command
When the number of files in an archive is
more, you may pipe the output of tar to less. But, you can also use less
command directly to view the tar archive output, as explained in one of our
previous article Open & View 10 Different File Types with Linux Less
Command — The Ultimate Power of Less.
5. Extract a single
file from tar, tar.gz, tar.bz2 file
To extract a specific file from a tar
archive, specify the file name at the end of the tar xvf command as shown
below. The following command extracts only a specific file from a large tar
file.
$ tar -xvf
archive_file.tar /path/to/file
Use the relevant option
z or j according to the compression method gzip or bzip2 respectively as shown
below.
$ tar -xvfz
archive_file.tar.gz /path/to/file
$ tar -xvfj archive_file.tar.bz2
/path/to/file
6. Extract a single directory from tar,
tar.gz, tar.bz2 file
To extract a single directory (along with
it’s subdirectory and files) from a tar archive, specify the directory name at
the end of the tar xvf command as shown below. The following extracts only a
specific directory from a large tar file.
$ tar -xvf archive_file.tar
/path/to/dir/
To extract multiple directories from a tar
archive, specify those individual directory names at the end of the tar xvf
command as shown below.
$ tar -xvf
archive_file.tar /path/to/dir1/ /path/to/dir2/
Use the relevant option z or j according to
the compression method gzip or bzip2 respectively as shown below.
$ tar -xvfz
archive_file.tar.gz /path/to/dir/
$ tar -xvfj
archive_file.tar.bz2 /path/to/dir/
7. Extract group of files from tar, tar.gz,
tar.bz2 archives using regular expression
You can specify a regex, to extract files
matching a specified pattern. For example, following tar command extracts all
the files with pl extension.
$ tar -xvf
archive_file.tar --wildcards '*.pl'
Where,
–wildcards
*.pl – files with pl extension
8. Adding a file or directory to an existing
archive using option -r
You can add additional files to an existing
tar archive as shown below. For example, to append a file to *.tar file do the
following:
$ tar -rvf
archive_name.tar newfile
This newfile will be added to the existing
archive_name.tar. Adding a directory to the tar is also similar,
$ tar -rvf
archive_name.tar newdir/
Note: You cannot add file or directory to a
compressed archive. If you try to do so, you will get “tar: Cannot update
compressed archives” error as shown below.
$ tar -rvfz
archive_name.tgz newfile
tar: Cannot
update compressed archives
Try `tar
--help' or `tar --usage' for more information.
9. Verify files
available in tar using option -W
As part of creating a tar file, you can
verify the archive file that got created using the option W as shown below.
$ tar -cvfW
file_name.tar dir/
If you are planning to
remove a directory/file from an archive file or from the file system, you might
want to verify the archive file before doing it as shown below.
$ tar -tvfW
file_name.tar
Verify
1/file1
1/file1: Mod
time differs
1/file1:
Size differs
Verify
1/file2
Verify
1/file3
If an output line starts with Verify, and
there is no differs line then the file/directory is Ok. If not, you should
investigate the issue.
Note: for a compressed archive file ( *.tar.gz, *.tar.bz2 ) you cannot do
the verification.
Finding the difference between an archive
and file system can be done even for a compressed archive. It also shows the
same output as above excluding the lines with Verify.
Finding the difference between gzip archive file and file system
$ tar -dfz
file_name.tgz
Finding the difference between bzip2 archive
file and file system
$ tar -dfj
file_name.tar.bz2
10. Estimate the tar archive size
The following command, estimates the tar
file size ( in KB ) before you create the tar file.
$ tar --cf -
/directory/to/archive/ | wc -c
20480
The following command, estimates the
compressed tar file size ( in KB ) before you create the tar.gz, tar.bz2 files.
$ tar --czf
- /directory/to/archive/ | wc -c
508
$ tar --cjf
- /directory/to/archive/ | wc -c
428
Back To Top
Home
No comments:
Post a Comment