old-www/LDP/sag/html/simple-backups.html

601 lines
10 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Simple backups</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Linux System Administrators Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Backups"
HREF="backups-intro.html"><LINK
REL="PREVIOUS"
TITLE="Selecting the backup tool"
HREF="backup-tools.html"><LINK
REL="NEXT"
TITLE="Multilevel backups"
HREF="multi-level-backups.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Linux System Administrators Guide: </TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="backup-tools.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 12. Backups</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="multi-level-backups.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="SIMPLE-BACKUPS"
></A
>12.4. Simple backups</H1
><P
> A simple backup scheme is to back up everything once,
then back up everything that has been modified since the
previous backup. The first backup is called a <I
CLASS="GLOSSTERM"
>full
backup</I
>, the subsequent ones are <I
CLASS="GLOSSTERM"
>incremental
backups</I
>. A full backup is often more laborious
than incremental ones, since there is more data to write to the
tape and a full backup might not fit onto one tape (or floppy).
Restoring from incremental backups can be many times more work
than from a full one. Restoration can be optimized so that
you always back up everything since the previous full backup;
this way, backups are a bit more work, but there should never
be a need to restore more than a full backup and an incremental
backup. </P
><P
> If you want to make backups every day and have six
tapes, you could use tape 1 for the first full backup (say, on
a Friday), and tapes 2 to 5 for the incremental backups (Monday
through Thursday). Then you make a new full backup on tape 6
(second Friday), and start doing incremental ones with tapes 2
to 5 again. You don't want to overwrite tape 1 until you've got
a new full backup, lest something happens while you're making
the full backup. After you've made a full backup to tape 6,
you want to keep tape 1 somewhere else, so that when your other
backup tapes are destroyed in the fire, you still have at least
something left. When you need to make the next full backup,
you fetch tape 1 and leave tape 6 in its place. </P
><P
> If you have more than six tapes, you can use the extra
ones for full backups. Each time you make a full backup, you
use the oldest tape. This way you can have full backups from
several previous weeks, which is good if you want to find an old,
now deleted file, or an old version of a file. </P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TAR-BACKUPS"
></A
>12.4.1. Making backups with <B
CLASS="COMMAND"
>tar</B
></H2
><P
> A full backup can easily be made with <B
CLASS="COMMAND"
>tar</B
>:
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>#</TT
> <TT
CLASS="USERINPUT"
><B
>tar --create --file /dev/ftape
/usr/src</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>tar: Removing leading / from absolute path names in
the archive</TT
>
<TT
CLASS="PROMPT"
>#</TT
></PRE
></FONT
></TD
></TR
></TABLE
>
The example above uses the GNU version of <B
CLASS="COMMAND"
>tar</B
>
and its long option names. The traditional version of
<B
CLASS="COMMAND"
>tar</B
> only understands single character
options. The GNU version can also handle backups that don't
fit on one tape or floppy, and also very long paths; not all
traditional versions can do these things. (Linux only uses
GNU <B
CLASS="COMMAND"
>tar</B
>.) </P
><P
> If your backup doesn't fit on one tape, you need to use
the <TT
CLASS="OPTION"
>--multi-volume</TT
> (<TT
CLASS="OPTION"
>-M</TT
>) option:
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>#</TT
> <TT
CLASS="USERINPUT"
><B
>tar -cMf /dev/fd0H1440
/usr/src</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>tar: Removing leading / from absolute path names in
the archive
Prepare volume #2 for /dev/fd0H1440 and hit return:</TT
>
<TT
CLASS="PROMPT"
>#</TT
></PRE
></FONT
></TD
></TR
></TABLE
>
Note that you should format the floppies before you begin the
backup, or else use another window or virtual terminal and do
it when <B
CLASS="COMMAND"
>tar</B
> asks for a new floppy. </P
><P
> After you've made a backup, you should check that it is OK,
using the <TT
CLASS="OPTION"
>--compare</TT
> (<TT
CLASS="OPTION"
>-d</TT
>) option:
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>#</TT
> <TT
CLASS="USERINPUT"
><B
>tar --compare --verbose -f
/dev/ftape</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
....</TT
>
<TT
CLASS="PROMPT"
>#</TT
></PRE
></FONT
></TD
></TR
></TABLE
>
Failing to check a backup means that you will not notice that your
backups aren't working until after you've lost the original data.
</P
><P
> An incremental backup can be done with
<B
CLASS="COMMAND"
>tar</B
> using the <TT
CLASS="OPTION"
>--newer</TT
>
(<TT
CLASS="OPTION"
>-N</TT
>) option:
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>#</TT
> <TT
CLASS="USERINPUT"
><B
>tar --create --newer '8 Sep 1995'
--file /dev/ftape /usr/src
--verbose</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>tar: Removing leading / from absolute path names in
the archive
usr/src/
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/modules/
usr/src/linux-1.2.10-includes/include/asm-generic/
usr/src/linux-1.2.10-includes/include/asm-i386/
usr/src/linux-1.2.10-includes/include/asm-mips/
usr/src/linux-1.2.10-includes/include/asm-alpha/
usr/src/linux-1.2.10-includes/include/asm-m68k/
usr/src/linux-1.2.10-includes/include/asm-sparc/
usr/src/patch-1.2.11.gz</TT
>
<TT
CLASS="PROMPT"
>#</TT
></PRE
></FONT
></TD
></TR
></TABLE
>
Unfortunately, <B
CLASS="COMMAND"
>tar</B
> can't notice when a file's
inode information has changed, for example, that its permission
bits have been changed, or when its name has been changed.
This can be worked around using <B
CLASS="COMMAND"
>find</B
> and
comparing current filesystem state with lists of files that have
been previously backed up. Scripts and programs for doing this
can be found on Linux ftp sites. </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TAR-RESTORE"
></A
>12.4.2. Restoring files with <B
CLASS="COMMAND"
>tar</B
></H2
><P
> The <TT
CLASS="OPTION"
>--extract</TT
> (<TT
CLASS="OPTION"
>-x</TT
>)
option for <B
CLASS="COMMAND"
>tar</B
> extracts files:
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>#</TT
> <TT
CLASS="USERINPUT"
><B
>tar --extract --same-permissions
--verbose --file
/dev/fd0H1440</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...</TT
>
<TT
CLASS="PROMPT"
>#</TT
></PRE
></FONT
></TD
></TR
></TABLE
>
You also extract only specific files or directories (which
includes all their files and subdirectories) by naming on the
command line:
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>#</TT
> <TT
CLASS="USERINPUT"
><B
>tar xpvf /dev/fd0H1440
usr/src/linux-1.2.10-includes/include/linux/hdreg.h</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>usr/src/linux-1.2.10-includes/include/linux/hdreg.h</TT
>
<TT
CLASS="PROMPT"
>#</TT
></PRE
></FONT
></TD
></TR
></TABLE
>
Use the <TT
CLASS="OPTION"
>--list</TT
> (<TT
CLASS="OPTION"
>-t</TT
>) option,
if you just want to see what files are on a backup volume:
<TABLE
BORDER="1"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="SCREEN"
><TT
CLASS="PROMPT"
>#</TT
> <TT
CLASS="USERINPUT"
><B
>tar --list --file
/dev/fd0H1440</B
></TT
>
<TT
CLASS="COMPUTEROUTPUT"
>usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...</TT
>
<TT
CLASS="PROMPT"
>#</TT
></PRE
></FONT
></TD
></TR
></TABLE
>
Note that <B
CLASS="COMMAND"
>tar</B
> always reads the backup volume
sequentially, so for large volumes it is rather slow. It is not
possible, however, to use random access database techniques when
using a tape drive or some other sequential medium. </P
><P
> <B
CLASS="COMMAND"
>tar</B
> doesn't handle deleted files
properly. If you need to restore a filesystem from a full and
an incremental backup, and you have deleted a file between
the two backups, it will exist again after you have done the
restore. This can be a big problem, if the file has sensitive
data that should no longer be available. </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="backup-tools.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="multi-level-backups.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Selecting the backup tool</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="backups-intro.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Multilevel backups</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>