<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta name="generator" content="automaticly generated with debiandoc, wml, perl, tidy (www.w3.org)"> <title>Backups on CD - Overview</title> <meta http-equiv="content-type" content="text/html"> <meta name="author" content="Holger Nassenstein (backups@tuxoncd.de)"> <meta name="publisher" content="Holger Nassenstein"> <meta name="copyright" content="Holger Nassenstein"> <meta name="description" content="This page describes how to generate multi-volume backups on CD-RW. You can download a set of shell scripts which make this very easy."> <meta name="Page-Topic" content="Multi-volume Backups On CD, Linux"> <meta name="KeyWords" content="Backups, CD, Linux, Unix, CD-RW, afio, tar, multi-volume backups, cdrecord, software, hardware, support, help, information, resources, manual, documentation, miniHOWTO, howto, Homepage, download"> <meta name="Classification" content="Computer, Software, Hardware, Safety, Backups"> <meta name="page-type" content="Computer, Software, Hardware, Safety, Backups"> <meta name="robots" content="index, follow"> <meta name="revisit-after" content="20 days"> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="expires" content="0"> <meta name="audience" content="Alle, all"> <link rel="stylesheet" type="text/css" media="screen" href="css_graphics/screen.css"> <link rel="stylesheet" type="text/css" media="print" href="css_graphics/print.css"> </head> <body bgcolor="#ffffff" text="#000000" link="#ff0000" alink="#0000ff" vlink="#888888"> <table width="100%"> <colgroup span="3"> </colgroup> <tr> <td width="7%"> </td> <td> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <table> <colgroup span="4"> </colgroup> <tr> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code function ro_imgNormal(imgName) { if (document.images) { document[imgName].src = eval(imgName + "_n.src"); self.status = ''; } } function ro_imgOver(imgName, descript) { if (document.images) { document[imgName].src = eval(imgName + "_o.src"); self.status = descript; } } // done hiding --> </script> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown1_n = new Image(); ro_img_unknown1_n.src = "css_graphics/abstract.gif"; ro_img_unknown1_o = new Image(); ro_img_unknown1_o.src = "css_graphics/abstract_hl.gif"; } // done hiding --> </script> <a href="index.html#abstract" onmouseover="ro_imgOver('ro_img_unknown1', 'Abstract'); return true" onmouseout="ro_imgNormal('ro_img_unknown1'); return true"><img name="ro_img_unknown1" src="css_graphics/abstract.gif" alt="Abstract" width="85" height="24" border="0"></a> </td> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown2_n = new Image(); ro_img_unknown2_n.src = "css_graphics/copyright_notice.gif"; ro_img_unknown2_o = new Image(); ro_img_unknown2_o.src = "css_graphics/copyright_notice_hl.gif"; } // done hiding --> </script> <a href="index.html#copyright" onmouseover="ro_imgOver('ro_img_unknown2', 'Copyright'); return true" onmouseout="ro_imgNormal('ro_img_unknown2'); return true"><img name="ro_img_unknown2" src="css_graphics/copyright_notice.gif" alt="Copyright" width="154" height="28" border="0"></a> </td> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown3_n = new Image(); ro_img_unknown3_n.src = "css_graphics/contents.gif"; ro_img_unknown3_o = new Image(); ro_img_unknown3_o.src = "css_graphics/contents_hl.gif"; } // done hiding --> </script> <a href="index.html#contents" onmouseover="ro_imgOver('ro_img_unknown3', 'Contents'); return true" onmouseout="ro_imgNormal('ro_img_unknown3'); return true"><img name="ro_img_unknown3" src="css_graphics/contents.gif" alt="Contents" width="87" height="25" border="0"></a> </td> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown4_n = new Image(); ro_img_unknown4_n.src = "css_graphics/next.gif"; ro_img_unknown4_o = new Image(); ro_img_unknown4_o.src = "css_graphics/next_hl.gif"; } // done hiding --> </script> <a href="ch-quick.html" onmouseover="ro_imgOver('ro_img_unknown4', 'next'); return true" onmouseout="ro_imgNormal('ro_img_unknown4'); return true"><img name="ro_img_unknown4" src="css_graphics/next.gif" alt="next" width="48" height="23" border="0"></a> </td> </tr> </table> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <div class="center"> <table class="h1" border="0" cellspacing="0" cellpadding="5" width="90%"> <tr> <td class="h1"> Backups on CD <br> Chapter 1 Overview</td> </tr> </table> </div> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <h2><a name="s-usage">1.1 Usage</a></h2> <p>Just type <code>backuponcd -s (directory) -e (excludelist)</code>, where <code>(directory)</code> is the full path to the directory which you want to archive and <code>(excludelist)</code> is a grep-script.</p> <p>The output of <code>backuponcd -h</code> is:</p> <table width="90%"> <tr> <td class="pre"> <pre> -s directory which is to archived -e excludelist may be a empty file, usually a list of mountpoints, view example in /etc/backuponcd/excludelist -a archiver (optional) overrides your setting (archiver=..) in /etc/backuponcd/global.rc -rc global settings (optional). Overrides built in parameter "-rc /etc/backuponcd/global.rc". Must be full path to rc file. </pre> </td> </tr> </table> <p>If you want to generate a backup on a running system, some folders must be excluded, have a look on an example exclude list (see <a href="ch-settings.html#s-excludelist"><code>/usr/doc/backuponcd/samples/excludelist</code>, Section 4.1</a>).</p> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <h2><a name="s-whatdoesit">1.2 What does it do?</a></h2> <p>The script generates a backup providing tar or afio relative to <code>(directory)</code> and stores it temporary in the backuppath, depending on your settings in <a href="ch-settings.html#s-global.rc"><code>/etc/backuponcd/global.rc</code>, Section 4.2</a>. The archive can have any length, it is splitted into smaller pieces and burned while the backup runs continuous.</p> <p>This is done by using pipes and burning multisession CDs, so don't worry if the gzipped tarball of your system amounts 1.5 + Gbyte. In this case you need 3 CDs with a media cost of 6$ if you use CD-RW.</p> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <h2><a name="s-howitworks">1.3 How does it work?</a></h2> <p>Extracting an archive looks like this:</p> <table width="90%"> <tr> <td class="pre"> <pre> cat /cdwriter/tar.gz.* | tar --compare --gzip --file=- | \ tee -a /tmp/logfile </pre> </td> </tr> </table> <p>while the filenames of the archive are <code>tar.gz.00</code>, <code>tar.gz.01</code> and so on.</p> <p>A bit more complicated is reading a multisession backup:</p> <table width="90%"> <tr> <td class="pre"> <pre> # /usr/doc/backuponcd/samples/simple_read # a very simple example how to read an archive stored on # several CDs. Must be killed by typing ^C if reading is # finished. device="0,3,0" rawdevice=/dev/cdrom mountpt=/cdrom while true; do cdrecord dev=$device -eject > /dev/null 2>&1 echo -e "\a\n Please insert the (next) volume" > /dev/tty read ans mount -t iso9660 -o ro,noexec $rawdevice $mountpt if test $? -eq 0; then echo "Now reading the volume..." > /dev/tty cat /cdrom/*gz* else echo -e "\a\n Mount failed." > /dev/tty fi umount $mountpt done 2> /dev/tty < /dev/tty </pre> </td> </tr> </table> <p>The script is used as follows:</p> <table width="90%"> <tr> <td class="pre"> <pre> ~/bin/simple_read | tar --compare --gzip --file=- | \ tee -a /tmp/logfile </pre> </td> </tr> </table> <p>BackupOnCd comes with longer shell scripts which recognize multi- and singlesession CD and type out better comments, know which volume is inserted and so on.</p> <p>If you assume that burning does work similar you're right, it does (see <a href="ch-details.html">Details, Chapter 3</a> if you are interested).</p> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <table> <colgroup span="4"> </colgroup> <tr> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown5_n = new Image(); ro_img_unknown5_n.src = "css_graphics/abstract.gif"; ro_img_unknown5_o = new Image(); ro_img_unknown5_o.src = "css_graphics/abstract_hl.gif"; } // done hiding --> </script> <a href="index.html#abstract" onmouseover="ro_imgOver('ro_img_unknown5', 'Abstract'); return true" onmouseout="ro_imgNormal('ro_img_unknown5'); return true"><img name="ro_img_unknown5" src="css_graphics/abstract.gif" alt="Abstract" width="85" height="24" border="0"></a> </td> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown6_n = new Image(); ro_img_unknown6_n.src = "css_graphics/copyright_notice.gif"; ro_img_unknown6_o = new Image(); ro_img_unknown6_o.src = "css_graphics/copyright_notice_hl.gif"; } // done hiding --> </script> <a href="index.html#copyright" onmouseover="ro_imgOver('ro_img_unknown6', 'Copyright'); return true" onmouseout="ro_imgNormal('ro_img_unknown6'); return true"><img name="ro_img_unknown6" src="css_graphics/copyright_notice.gif" alt="Copyright" width="154" height="28" border="0"></a> </td> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown7_n = new Image(); ro_img_unknown7_n.src = "css_graphics/contents.gif"; ro_img_unknown7_o = new Image(); ro_img_unknown7_o.src = "css_graphics/contents_hl.gif"; } // done hiding --> </script> <a href="index.html#contents" onmouseover="ro_imgOver('ro_img_unknown7', 'Contents'); return true" onmouseout="ro_imgNormal('ro_img_unknown7'); return true"><img name="ro_img_unknown7" src="css_graphics/contents.gif" alt="Contents" width="87" height="25" border="0"></a> </td> <td> <script type="text/javascript" language="JavaScript"> <!-- Hiding the code if (document.images) { ro_img_unknown8_n = new Image(); ro_img_unknown8_n.src = "css_graphics/next.gif"; ro_img_unknown8_o = new Image(); ro_img_unknown8_o.src = "css_graphics/next_hl.gif"; } // done hiding --> </script> <a href="ch-quick.html" onmouseover="ro_imgOver('ro_img_unknown8', 'next'); return true" onmouseout="ro_imgNormal('ro_img_unknown8'); return true"><img name="ro_img_unknown8" src="css_graphics/next.gif" alt="next" width="48" height="23" border="0"></a> </td> </tr> </table> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> Backups on CD <br> <table width="100%"> <tr> <td> <address> 17 April 2000 <br> Holger Nassenstein <code><a href="mailto:backups@tuxoncd.de">backups@tuxoncd.de</a></code> </address> </td> <td align="right"><a href="http://www.anybrowser.org/"><img src="css_graphics/biga.gif" border="0" alt="ANY Browser Campaign: http://www.anybrowser.org/" width="88" height="31"></a></td> </tr> </table> </td> <td width="7%"> </td> </tr> </table> </body> </html>