Backup tools
As mentioned before, Linux backups are largely about packaging and
unpackaging files. This allows you to use existing system utilities and
scripting to perform your backups rather than having to purchase a
commercial software package. In many cases, this type of backup will be
adequate, and it provides a great deal of control for the administrator.
The backup script can be automated using the cron
command, which controls scheduled events in
Linux.
tar
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.
Just in caseDon't forget that Linux is case sensitive. The |
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.
dump and restore
dump
can perform functions similar to
tar
. However, dump
tends to look at file
systems rather than individual files. Quoting from the dump
man file:
"dump examines files on an ext2 filesystem and determines which files need
to be backed up. These files are copied to the given disk, tape, or other
storage medium for safe keeping.... A dump that is larger than the
output medium is broken into multiple volumes. On most media, the size is
determined by writing until an end-of-media indication is returned."
The companion program to dump
is restore
, which is used to restore files from a dump
image.
The restore
command performs the inverse
function of dump. A full backup of a file system may be restored and
subsequent incremental backups layered on top of it. Single files and
directory subtrees may be restored from full or partial backups.
Both dump
and restore
can be run across the network, so you can
back up or restore from remote devices. dump
and restore
work with tape drives and file
devices providing a wide range of options. However, both are limited to
the ext2 and ext3 file systems. If you are working with JFS, Reiser, or
other file systems, you will need to use a different utility, such as
tar
.
View Windows-to-Linux roadmap: Part 8. Backup and recovery Discussion
Page: 1 2 3 4 5 Next Page: Backing up with dump