<!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 - Quick Reference</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="5"> </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/previous.gif"; ro_img_unknown1_o = new Image(); ro_img_unknown1_o.src = "css_graphics/previous_hl.gif"; } // done hiding --> </script> <a href="ch1.html" onmouseover="ro_imgOver('ro_img_unknown1', 'previous'); return true" onmouseout="ro_imgNormal('ro_img_unknown1'); return true"><img name="ro_img_unknown1" src="css_graphics/previous.gif" alt="previous" width="86" height="27" 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/abstract.gif"; ro_img_unknown2_o = new Image(); ro_img_unknown2_o.src = "css_graphics/abstract_hl.gif"; } // done hiding --> </script> <a href="index.html#abstract" onmouseover="ro_imgOver('ro_img_unknown2', 'Abstract'); return true" onmouseout="ro_imgNormal('ro_img_unknown2'); return true"><img name="ro_img_unknown2" 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_unknown3_n = new Image(); ro_img_unknown3_n.src = "css_graphics/copyright_notice.gif"; ro_img_unknown3_o = new Image(); ro_img_unknown3_o.src = "css_graphics/copyright_notice_hl.gif"; } // done hiding --> </script> <a href="index.html#copyright" onmouseover="ro_imgOver('ro_img_unknown3', 'Copyright'); return true" onmouseout="ro_imgNormal('ro_img_unknown3'); return true"><img name="ro_img_unknown3" 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_unknown4_n = new Image(); ro_img_unknown4_n.src = "css_graphics/contents.gif"; ro_img_unknown4_o = new Image(); ro_img_unknown4_o.src = "css_graphics/contents_hl.gif"; } // done hiding --> </script> <a href="index.html#contents" onmouseover="ro_imgOver('ro_img_unknown4', 'Contents'); return true" onmouseout="ro_imgNormal('ro_img_unknown4'); return true"><img name="ro_img_unknown4" 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_unknown5_n = new Image(); ro_img_unknown5_n.src = "css_graphics/next.gif"; ro_img_unknown5_o = new Image(); ro_img_unknown5_o.src = "css_graphics/next_hl.gif"; } // done hiding --> </script> <a href="ch-details.html" onmouseover="ro_imgOver('ro_img_unknown5', 'next'); return true" onmouseout="ro_imgNormal('ro_img_unknown5'); return true"><img name="ro_img_unknown5" 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 2 Quick Reference</td> </tr> </table> </div> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <h2><a name="s-installing">2.1 Installing BackupOnCd</a></h2> <p>Just extract the tarball. Copy the executables <code>/usr/local/sbin</code> and the folder <code>etc/backuponcd</code> to <code>/etc</code>. With the debian package you should have nothing to do.</p> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <h3><a name="s2.1.1">2.1.1 Dependencies</a></h3> <p>On a debian system you need to have installed the following packages:</p> <table width="90%"> <tr> <td class="pre"> <pre> textutils shellutils fileutils sed awk findutils mount cdrecord mkisofs >> 1.8a tar or afio gzip </pre> </td> </tr> </table> <p>As you see everything is done with standard tools.</p> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <h3><a name="s2.1.2">2.1.2 Customizing (a must)</a></h3> <ul> <li> With the settings BackupOnCd comes with, you need 400 Mbyte free disk space under <code>/tmp/</code>. If free space doesn't fit you need to edit <a href="ch-settings.html#s-global.rc"><code>/etc/backuponcd/global.rc</code>, Section 4.2</a>. <p>You have several options:</p> <ul> <li>Change the variable <code>TMP="..."</code> to a directory where is enough disk space</li> <li> Enlarge the variable <code>tracks=</code> and decrease <code>tracksize=</code> <p>Note, that a so-called lead-out is needed for each track, the amount of space on the disk is decreased by the count of tracks. For details have a look at <code><a href="http://localhost/doc/cdrecord/README.multi">/usr/doc/cdrecord/README.multi</a></code>, or visit the homepage of <code><a href="http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdrecord.html">cdrecord</a></code>. You can play with these settings, if one track doesn't fit on the CD it is stored on the next CD.</p> </li> <li> If free space is very small, you can force BackupOnCd to do the burning <em>not</em> parallel to the backup. If you did that, only one <code>tracksize</code> space is needed. Edit <code>/sbin/backuponcd_toast.sh</code>, delete the single ampersand at the end of the line: <table width="90%"> <tr> <td class="pre"> <pre> ( nice -n -10 mkisofs -R -J -L $vol $volid \ $multiinfo $toast_dir | cdrecord -v $dev \ $devdepend $blank fs=8m -multi - && rm \ $toast_dir/* ) 2>> $logfile & </pre> </td> </tr> </table> </li> <li>A better option: Get an old 850 Mbyte disk and mount it to <code>/tmp</code>.</li> </ul> </li> <li>Try out to change the variable <code>devdepend="speed=2 -eject"</code> to <code>devdepend="speed=x"</code>, while speed is the speed of your cdwriter. Please email me if it works or not. A Philipps CDD 3600 does not read the trackinfo if the CD is not ejected after each track. I think this toaster does a reset if the CD is ejected. You cannot run into trouble by playing this setting, a failed backup is all what can happen.</li> <li> Edit the line <code>archiver=</code>, choose tar or afio. Note, that find is <em>not</em> used if you choosed tar as archiver. The main disadvantage is, that no filelist is generated. Tar often is used as followed: <table width="90%"> <tr> <td class="pre"> <pre> find . -not -type d | grep -v -f excludelist | \ tee -a filelist | tar -cvz --file=archive.tar.gz \ --files-from=- </pre> </td> </tr> </table> <p>With the above line empty directorys and each directory found in <code>excludelist</code> (ususally mountpoints) would <em>not</em> be archived. In my opinion this wouldn't be a backup, so tar is used as below:</p> <table width="90%"> <tr> <td class="pre"> <pre> tar -cvz -X $excludelist --file=- . </pre> </td> </tr> </table> <p>It should be easy for you to edit <code>/sbin/backupond</code> if you don't like this quality.</p> </li> <li>Edit <code>rawdevice=</code> and <code>mountpt=</code></li> </ul> <br> <br> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <h2><a name="s2.2">2.2 Enjoying</a></h2> <p>See <a href="ch1.html#s-usage">Usage, Section 1.1</a> for commandline options. Copy or move the file <a href="ch-settings.html#s-excludelist"><code>/usr/doc/backuponcd/samples/excludelist</code>, Section 4.1</a> to a place where you want and edit it, so that it fits to your system or the system which you want to backup.</p> <p>The remaining is fun. Everything is done automaticly, the backup will get compared, logliles and scripts are burned on the last CD. It should be easy to do a restore with a system started from a floppy.</p> <img src="css_graphics/imgdot-1x1-red.gif" width="100%" height="1" alt="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <br> <table> <colgroup span="5"> </colgroup> <tr> <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/previous.gif"; ro_img_unknown6_o = new Image(); ro_img_unknown6_o.src = "css_graphics/previous_hl.gif"; } // done hiding --> </script> <a href="ch1.html" onmouseover="ro_imgOver('ro_img_unknown6', 'previous'); return true" onmouseout="ro_imgNormal('ro_img_unknown6'); return true"><img name="ro_img_unknown6" src="css_graphics/previous.gif" alt="previous" width="86" height="27" 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/abstract.gif"; ro_img_unknown7_o = new Image(); ro_img_unknown7_o.src = "css_graphics/abstract_hl.gif"; } // done hiding --> </script> <a href="index.html#abstract" onmouseover="ro_imgOver('ro_img_unknown7', 'Abstract'); return true" onmouseout="ro_imgNormal('ro_img_unknown7'); return true"><img name="ro_img_unknown7" 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_unknown8_n = new Image(); ro_img_unknown8_n.src = "css_graphics/copyright_notice.gif"; ro_img_unknown8_o = new Image(); ro_img_unknown8_o.src = "css_graphics/copyright_notice_hl.gif"; } // done hiding --> </script> <a href="index.html#copyright" onmouseover="ro_imgOver('ro_img_unknown8', 'Copyright'); return true" onmouseout="ro_imgNormal('ro_img_unknown8'); return true"><img name="ro_img_unknown8" 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_unknown9_n = new Image(); ro_img_unknown9_n.src = "css_graphics/contents.gif"; ro_img_unknown9_o = new Image(); ro_img_unknown9_o.src = "css_graphics/contents_hl.gif"; } // done hiding --> </script> <a href="index.html#contents" onmouseover="ro_imgOver('ro_img_unknown9', 'Contents'); return true" onmouseout="ro_imgNormal('ro_img_unknown9'); return true"><img name="ro_img_unknown9" 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_unknown10_n = new Image(); ro_img_unknown10_n.src = "css_graphics/next.gif"; ro_img_unknown10_o = new Image(); ro_img_unknown10_o.src = "css_graphics/next_hl.gif"; } // done hiding --> </script> <a href="ch-details.html" onmouseover="ro_imgOver('ro_img_unknown10', 'next'); return true" onmouseout="ro_imgNormal('ro_img_unknown10'); return true"><img name="ro_img_unknown10" 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>