|
Softpanorama |
May the source be with you, but remember the KISS principle ;-)
Softpanorama Search
|
tar is a classic UNIX command that has been ported into Linux.
tar is short for tape archive, and was originally designed
for packaging files onto tape. You have probably already encountered tar files if
you have downloaded any source code for Linux. It is a file-based command that essentially
serially stacks the files end to end.
Entire directory trees can be packaged with tar, which makes it
especially suited to backups. Archives can be restored in their entirety, or files
and directories can be expanded individually. Backups can go to file-based devices
or tape devices. Files can be redirected upon restoration to replace to a different
directory (or system) from where they were originally saved. tar is
file system-independent. It can be used on ext2, ext3, jfs, Reiser, and other file
systems.
Using tar is very much like using a file utility, such as PKZip.
You point it toward a destination, which is a file or a device, and then name the
files that you want to package. You can compress archives on the fly with standard
compression types, or specify an external compression program of your choice. To
compress or uncompress files through bzip2, use tar -z.
To back up the entire file system using tar to a SCSI tape drive,
excluding the /proc directory:
tar -cpf /dev/st0 / --exclude=/proc
In the above example, the -c switch indicates that the archive is
being created. The -p switch indicates that we want to preserve the
file permissions, critical for a good backup. The -f switch points
to the filename for the archive. In this case, we are using the raw tape device,
/dev/st0. The / indicates what we want to back up. Since we wanted the entire file
system, we specified the root. tar automatically recurses when pointed
to a directory (ending in a /). Finally, we exclude the /proc directory, since it
doesn't contain anything we need to save. If the backup will not fit on a single
tape, we will add the -M switch (not shown), for multi-volume.
|
|
|
To restore a file or files, the tar command is used with the extract
switch (-x):
tar -xpf /dev/st0 -C /
The -f switch again points to our file, and -p indicates
that we want to restore archived permissions. The -x switch indicates
an extraction of the archive. The -C / indicates that we want the restore
to occur from /. tar normally restores to the directory from which
the command is run. The -C switch makes our current directory irrelevant.
The two other tar commands that you will probably use often are
the -t and -d switches. The -t switch lists
the contents of an archive. The -d switch compares the contents of
the archive to current files on a system.
For ease of operation and editing, you can put the files and directories that
you want to archive in a text file, which you reference with the -T
switch. These can be combined with other directories listed on the command line.
The following line backs up all the files and directories listed in MyFiles, the
/root directory, and all of the iso files in the /tmp directory:
tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso
The file list is simply a text file with the list of files or directories. Here's an example:
/etc
/var
/home
/usr/local
/opt
Please note that the tar -T (or files-from) command
cannot accept wildcards. Files must be listed explicitly. The example above shows
one way to reference files separately. You could also execute a script to search
the system and then build a list. Here is an example of such a script:
#!/bin/sh
cat MyFiles > TempList
find /usr/share -iname *.png >> TempList
find /tmp -iname *.iso >> TempList
tar -cpzMf /dev/st0 -T TempList
The above script first copies all of our existing file list from MyFiles to TempList.
Then it executes a couple of find commands to search the file system
for files that match a pattern and to append them to the TempList. The first search
is for all files in the /usr/share directory tree that end in .png.
The second search is for all files in the /tmp directory tree that end in
.iso. Once the list is built, then tar is run to create
a new archive on the file device /dev/st0 (the first SCSI tape drive), which
is compressed using the gzip format and retains all of the file permissions.
The archive will span Multiple volumes. The file names to be archived will
be Taken from the file TempList.
Scripting can also be used to perform much more elaborate actions such as incremental backups. An excellent script is listed by Gerhard Mourani in his book Securing and Optimizing Linux, which you will find listed in the Resources section at the end of this article.
Scripts can also be written to restore files, though restoration is often done
manually. As mentioned above, the -x switch for extract replaces
the -c switch. Entire archives can be restored, or individual files
or directories can be specified. Wildcards are okay to reference files in the archive.
You can also use switches to dump and restore.
Copyright © 1996-2009 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Site uses AdSense so you need to be aware of Google privacy policy. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
Disclaimer:
Created May 16, 1996; Last modified: June 20, 2009