Tar

tar is short for "tape archive", although its use with magnetic tape backups is primarily of historical concern. tar is both a command and a file format used by the command. It is used to collect several files into one archive, which can be more easily managed or compressed as a unit, often with gzip or bzip2.

Using tar
Tar has several uses, but the most commonly used is to extract or to create tar archive (known as "tarballs")

.tar
To unpack a standard .tar file, use the command tar -xvf filename The Command options of tar:
 * x: decompress something
 * t: view contents
 * v: verbose mode
 * f: input from a file

If the f flag is omitted, the command will read from stdin. This allows several interesting things: for example, piping output in tar format to tar, to have it untarred.

(Note that, unlike most commands, the '-' before the options may be omitted.)

To create a tarball, you can use tar cf tarballname.tar files which can be compressed afterwards.

.tar.gz
Decompressing tarballs that have been gzipped can be done in two ways: first decompressing then extracting, by gunzip filename.tar.gz && tar xf filename.tar

Alternatively, some versions of tar support inbuilt decompression of gzipped tar files. This requires the z option, transforming the command to: tar -xvzf filename

tar.bz2
Decompressing Bzip2 tar files can be done in the same manner, bunzip2 first and then tar, but some versions of tar allow you to use the j option: tar -xvjf filename

If this option is not available to you, the same effect can be achieved by the following: bunzip2 filename | tar -xvf - where, as mentioned above, the output of bunzip2 is piped to tar, which is directed to read from stdin with the final '-'.

View contents of an archive
If you just want to view the contents of a tar file instead of extracting it: tar -tf filename

You can filter it through gzip or bunzip2 respectively: tar -tzf filename tar -tjf filename

Using tar to copy files
In addition to archiving files, tar can also be used to copy a group of files and directories using a pipe. To move all the files (including hidden ones) in /olddir to /newdir, for example, the syntax is tar -c. | (cd /newdir; tar -xv)

Don't worry about the -v option with the pipe; the -v option writes to the stderr stream and will not interfere with the pipe.

Using tar to transmit files
In addition to copying files, tar can also be used to transmit a group of files and directories using a pipe and ssh. To transmit all the files from your directory to the folder /archive on 192.168.0.80, for example, the syntax is tar cv -f-. | ssh root@192.168.0.80 "(mkdir /archive; cd /archive; tar -xv)" See also: Cloning

Excluding Directories
Here's an example of including everything but opt and home directories.

tar --exclude=home --exclude=opt --exclude=srv -cvf slash.tar /

This excludes all opt and home directories, not just the ones under the current working directory.

Tar A Mounted Directory With No Leading Paths
tar -cvpjf /path/to/file.tar.bz2 ./*

This will tar any mounted directory and it will contain no nested path folders. This is helpful when you wish to back-up a mounted partition to a disk or another drive, and have the option of extracting it again without the usual leading paths.