Implementing a backup plan is essential in order to have the ability to recover from disk failure, accidental file deletion, random file corruption, or complete machine destruction, including destruction of on-site backups.
The backup type and schedule will vary, depending upon the importance of the data, the granularity needed for file restores, and the amount of acceptable downtime. Some possible backup techniques include:
Archives of the whole system, backed up onto permanent, off-site media. This provides protection against all of the problems listed above, but is slow and inconvenient to restore from, especially for non-privileged users.
File system snapshots, which are useful for restoring deleted files or previous versions of files.
Copies of whole file systems or disks which are synchronized with another system on the network using a scheduled net/rsync.
Hardware or software RAID, which minimizes or avoids downtime when a disk fails.
Typically, a mix of backup techniques is used. For example, one could create a schedule to automate a weekly, full system backup that is stored off-site and to supplement this backup with hourly ZFS snapshots. In addition, one could make a manual backup of individual directories or files before making file edits or deletions.
This section describes some of the utilities which can be used to create and manage backups on a FreeBSD system.
The traditional UNIX® programs for backing up a file
system are dump(8), which creates the backup, and
restore(8), which restores the backup. These utilities
work at the disk block level, below the abstractions of the
files, links, and directories that are created by file
systems. Unlike other backup software,
dump
backs up an entire file system and is
unable to backup only part of a file system or a directory
tree that spans multiple file systems. Instead of writing
files and directories, dump
writes the raw
data blocks that comprise files and directories.
If dump
is used on the root
directory, it will not back up /home
,
/usr
or many other directories since
these are typically mount points for other file systems or
symbolic links into those file systems.
When used to restore data, restore
stores temporary files in /tmp/
by
default. When using a recovery disk with a small
/tmp
, set TMPDIR
to a
directory with more free space in order for the restore to
succeed.
When using dump
, be aware that some
quirks remain from its early days in Version 6 of
AT&T UNIX®,circa 1975. The default parameters assume a
backup to a 9-track tape, rather than to another type of media
or to the high-density tapes available today. These defaults
must be overridden on the command line.
It is possible to backup a file system across the network to a another system or to a tape drive attached to another computer. While the rdump(8) and rrestore(8) utilities can be used for this purpose, they are not considered to be secure.
Instead, one can use dump
and
restore
in a more secure fashion over an
SSH connection. This example creates a
full, compressed backup of /usr
and sends
the backup file to the specified host over a
SSH connection.
dump
over
ssh#
/sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \ targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz
This example sets RSH
in order to write the
backup to a tape drive on a remote system over a
SSH connection:
dump
over
ssh with RSH
Set#
env RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0 /usr
Several built-in utilities are available for backing up and restoring specified files and directories as needed.
A good choice for making a backup of all of the files in a directory is tar(1). This utility dates back to Version 6 of AT&T UNIX® and by default assumes a recursive backup to a local tape device. Switches can be used to instead specify the name of a backup file.
This example creates a compressed backup of the current
directory and saves it to
/tmp/mybackup.tgz
. When creating a
backup file, make sure that the backup is not saved to the
same directory that is being backed up.
To restore the entire backup, cd
into
the directory to restore into and specify the name of the
backup. Note that this will overwrite any newer versions of
files in the restore directory. When in doubt, restore to a
temporary directory or specify the name of the file within the
backup to restore.
There are dozens of available switches which are described in tar(1). This utility also supports the use of exclude patterns to specify which files should not be included when backing up the specified directory or restoring files from a backup.
To create a backup using a specified list of files and
directories, cpio(1) is a good choice. Unlike
tar
, cpio
does not know
how to walk the directory tree and it must be provided the
list of files to backup.
For example, a list of files can be created using
ls
or find
. This
example creates a recursive listing of the current directory
which is then piped to cpio
in order to
create an output backup file named
/tmp/mybackup.cpio
.
ls
and cpio
to Make a Recursive Backup of the Current Directory#
ls -R | cpio -ovF
/tmp/mybackup.cpio
A backup utility which tries to bridge the features
provided by tar
and cpio
is pax(1). Over the years, the various versions of
tar
and cpio
became
slightly incompatible. POSIX® created pax
which attempts to read and write many of the various
cpio
and tar
formats,
plus new formats of its own.
The pax
equivalent to the previous
examples would be:
While tape technology has continued to evolve, modern backup systems tend to combine off-site backups with local removable media. FreeBSD supports any tape drive that uses SCSI, such as LTO or DAT. There is limited support for SATA and USB tape drives.
For SCSI tape devices, FreeBSD uses the
sa(4) driver and the /dev/sa0
,
/dev/nsa0
, and
/dev/esa0
devices. The physical device
name is /dev/sa0
. When
/dev/nsa0
is used, the backup application
will not rewind the tape after writing a file, which allows
writing more than one file to a tape. Using
/dev/esa0
ejects the tape after the
device is closed.
In FreeBSD, mt
is used to control
operations of the tape drive, such as seeking through files on
a tape or writing tape control marks to the tape. For
example, the first three files on a tape can be preserved by
skipping past them before writing a new file:
#
mt -f /dev/nsa0 fsf 3
This utility supports many operations. Refer to mt(1) for details.
To write a single file to tape using
tar
, specify the name of the tape device
and the file to backup:
#
tar cvf /dev/sa0
file
To recover files from a tar
archive
on tape into the current directory:
#
tar xvf /dev/sa0
To backup a UFS file system, use
dump
. This examples backs up
/usr
without rewinding the tape when
finished:
#
dump -0aL -b64 -f /dev/nsa0 /usr
To interactively restore files from a
dump
file on tape into the current
directory:
#
restore -i -f /dev/nsa0
The FreeBSD Ports Collection provides many third-party utilities which can be used to schedule the creation of backups, simplify tape backup, and make backups easier and more convenient. Many of these applications are client/server based and can be used to automate the backups of a single system or all of the computers in a network.
Popular utilities include Amanda, Bacula, rsync, and duplicity.
In addition to regular backups, it is recommended to perform the following steps as part of an emergency preparedness plan.
Create a print copy of the output of the following commands:
gpart show
more /etc/fstab
dmesg
Store this printout and a copy of the installation media
in a secure location. Should an emergency restore be
needed, boot into the installation media and select
Live CD
to access a rescue shell. This
rescue mode can be used to view the current state of the
system, and if needed, to reformat disks and restore data
from backups.
The installation media for
FreeBSD/i386 10.4-RELEASE does not
include a rescue shell. For this version, instead
download and burn a Livefs CD image from
ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/10.4/FreeBSD-10.4-RELEASE-i386-livefs.iso
.
Next, test the rescue shell and the backups. Make notes of the procedure. Store these notes with the media, the printouts, and the backups. These notes may prevent the inadvertent destruction of the backups while under the stress of performing an emergency recovery.
For an added measure of security, store the latest backup at a remote location which is physically separated from the computers and disk drives by a significant distance.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.