home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / mini / Backup-With-MSDOS < prev    next >
Text File  |  1998-05-08  |  18KB  |  595 lines

  1.   Backup-With-MSDOS mini-HOWTO
  2.   Christopher Neufeld, neufeld@physics.utoronto.ca
  3.   v, 5 August 1997
  4.  
  5.   This HOWTO describes how to use a Linux-compatible tape drive
  6.   installed on an MS-DOS machine to back up the filesystem of a Linux
  7.   machine.
  8.   ______________________________________________________________________
  9.  
  10.   Table of Contents
  11.  
  12.  
  13.   1. Preface/Introduction
  14.  
  15.   2. The technique
  16.  
  17.   3. Notes
  18.  
  19.   4. Copyright
  20.  
  21.  
  22.  
  23.   ______________________________________________________________________
  24.  
  25.   1.  Preface/Introduction
  26.  
  27.   Earlier I posed the question on the Net, how does one back up a Linux
  28.   machine to a Colorado Jumbo 250 tape drive on an MS-DOS machine.  From
  29.   the email I received, it seems that this is a frequently pondered
  30.   problem.  Now that I've figured it out, I'm posting the method.  If
  31.   anybody wants to massage this into a HOWTO document, let me know.  I
  32.   should thank Jim Nance (jlnance@isscad.com) for pointing out that an
  33.   MS-DOS machine need not always be an MS-DOS machine.  This technique
  34.   should also work for any other tape drive supported by the ftape
  35.   module, and for SCSI tape drives with suitable obvious changes (i.e.
  36.   substituting /dev/st0 for /dev/ftape).
  37.  
  38.   The criteria I set were that the resulting setup should be as secure
  39.   as possible and should be fairly simple, and take up little or no
  40.   space on the MS-DOS machine's hard drive. It should also be capable of
  41.   recovering from the worst system corruptions, up to and including the
  42.   theft of the hard disk, requiring a restore to a bare Linux file
  43.   system.  The technique described here uses no hard drive space on the
  44.   MS-DOS machine, though it requires that that machine be assigned an
  45.   IP#.  You will need three formatted, blank 1.44MB diskettes.
  46.  
  47.   2.  The technique
  48.  
  49.   Throughout this description I will refer to two machines as ``msdos''
  50.   and ``linux''. ``msdos'' is the name of the machine which has the tape
  51.   drive and is usually running MS-DOS.  ``linux'' is the Linux machine
  52.   whose disk you are trying to back up or restore to the tape drive.
  53.   For simplicity I will refer to the first machine as ``msdos'' even
  54.   when it is booted into and running Linux.  Further, all path names in
  55.   this document should be considered to be relative to the Linux machine
  56.   with the Search-And-Rescue (SAR) disks mounted somewhere on the
  57.   system.  That means that the file /etc/passwd is the password file for
  58.   your Linux machine's hard drive, while, for instance,
  59.   /tape144/etc/passwd is the corresponding file on the floppy disk.
  60.  
  61.  
  62.   I am using Karel Kubat's backup scripts, version 1.03, available at
  63.  
  64.        <ftp://sunsite.enc.edu:/pub/Linux/system/Backup/backup-1.03.tar.gz>
  65.  
  66.  
  67.   Throughout this document I will refer to these simply as ``the backup
  68.   scripts''.  You do not have to use these scripts for your own backups
  69.   to tape.  I like these scripts as they use afio to form an uncom¡
  70.   pressed archive of compressed files, rather than a compressed archive
  71.   of uncompressed files.  The former is much safer if there is a media
  72.   read error during the restore.  I understand that Karel is no longer
  73.   supporting backup, and now has produced 'tob', or tape oriented
  74.   backup.  While I haven't tried the new package myself, it cannot make
  75.   a significant difference to the procedure outlined here.
  76.  
  77.   First of all, obtain the ftape module. It is a part of all modern
  78.   kernels, but if you are using an older kernel you can find the module
  79.   at:
  80.  
  81.        <ftp://sunsite.unc.edu/pub/Linux/kernel/tapes/ftape-2.05.tar.gz>
  82.  
  83.  
  84.   Next, get a Slackware boot disk (I got the net disk, but it doesn't
  85.   make much difference) and the tape144 root disk, and put the images
  86.   onto 3"1/2 floppies.
  87.  
  88.   The ftape module will only work if it is installed in the kernel which
  89.   was running when you compiled it.  I could not get it to work with the
  90.   ftape.o module on the tape144 root disk, I think because that module
  91.   has been stripped of symbols and won't install.  So, you now have to
  92.   make a new kernel with network and ftape support, and if you're
  93.   running an old kernel, a new ftape.o.  Read the directions which ship
  94.   with the ftape archive for directions at this stage.  Remember that
  95.   the kernel you compile must support the Ethernet cards on both the
  96.   Linux machine and the MS-DOS machine.
  97.  
  98.   Copy the newly created kernel image over top of the one on the Net
  99.   boot disk.  Use /bin/cp, do not create a boot disk with the ``dd''
  100.   command as you would to create a bootable kernel image.  Write protect
  101.   the boot disk, and label it: SAR#1.
  102.  
  103.   Now, mount the tape144 root disk.  I'll assume that the mount point is
  104.   /tape144, to avoid confusion in file names.  We need to free some
  105.   space on it, so delete the following files:
  106.  
  107.  
  108.        /tape144/bin/dialog
  109.        /tape144/bin/elvis
  110.        /tape144/bin/vi
  111.        /tape144/boot/ftape.o
  112.  
  113.  
  114.  
  115.  
  116.   Now, create a new file:
  117.  
  118.  
  119.        /tape144/etc/exports
  120.  
  121.  
  122.  
  123.  
  124.   which contains the following line:
  125.  
  126.  
  127.        /mnt    msdos(ro)
  128.  
  129.  
  130.  
  131.  
  132.   Where ``msdos'' should be replaced with the name or IP# of the MS-DOS
  133.   machine which has the tape drive installed.
  134.  
  135.   Next, so that you don't have to rely on a name server, add lines to
  136.   the file /tape144/etc/hosts with the names and IP numbers of the Linux
  137.   and MS-DOS machines.  For instance, mine contains the following two
  138.   lines:
  139.  
  140.  
  141.        128.100.75.114  caliban.physics.utoronto.ca caliban caliban.physics
  142.        128.100.75.111  ariel.physics.utoronto.ca ariel ariel.physics
  143.  
  144.  
  145.  
  146.  
  147.   Now, there's some sort of problem with the inetd configuration.  We
  148.   have to put the full path name of the rsh daemon in it.  Change line
  149.   19 of /tape144/etc/inetd.conf to read:
  150.  
  151.  
  152.        shell   stream  tcp     nowait  root    /usr/etc/tcpd   /usr/etc/in.rshd
  153.  
  154.  
  155.  
  156.  
  157.   Add local net routing information to /tape144/etc/rc.d/rc.inet1 to
  158.   enable the MS-DOS machine to use the network.  The format of this
  159.   depends on your network configuration, you can just copy the
  160.   appropriate format out of your Linux /etc/rc.d/rc.inet1.  For my
  161.   network, the lines that have to be added are:
  162.  
  163.  
  164.        /etc/ifconfig eth0 128.100.75.111 broadcast 128.100.75.0 netmask 255.255.255.0
  165.        /etc/route add -net 128.100.75.0 netmask 255.255.255.0
  166.  
  167.  
  168.  
  169.  
  170.   The IP# in the ifconfig entry is that of the MS-DOS machine.
  171.  
  172.   Now, copy this file into /tape144/etc/rc.d/rc.inet1-l, and change the
  173.   IP# in the new file to reflect that of the Linux machine rather than
  174.   the MS-DOS machine.
  175.  
  176.   Next, clip out lines 3 to 11 of /tape144/etc/rc.local.  That's an if
  177.   statement which executes the rc.inet* files.  We don't want this to
  178.   happen during the bootup.
  179.  
  180.   Create a new file: /tape144/root/.rhosts containing the line:
  181.  
  182.  
  183.        linux root
  184.  
  185.  
  186.  
  187.  
  188.   where, again, ``linux'' is replaced with the full machine name
  189.   (including domain) or the IP# of the Linux machine.
  190.  
  191.   Fill in the password field in /tape144/etc/passwd for the root login
  192.   to keep people from logging onto the MS-DOS machine while you're doing
  193.   the backup.  You can do this by copying the corresponding field from
  194.   your Linux machine's /etc/passwd file.
  195.  
  196.   Copy /usr/bin/rsh into /tape144/usr/bin.
  197.  
  198.  
  199.   Copy the following files from /usr/etc into /tape144/usr/etc:
  200.  
  201.  
  202.        in.rshd
  203.        rpc.mountd
  204.        rpc.nfsd
  205.        rpc.portmap
  206.        services
  207.        tcpd
  208.  
  209.  
  210.  
  211.  
  212.   Create a new script, /tape144/bin/tapesetup, which consists of the
  213.   following: (change ``linux'' to reflect your Linux machine name).
  214.  
  215.  
  216.        #! /bin/sh
  217.  
  218.        /bin/sh /etc/rc.d/rc.inet1
  219.        /bin/sh /etc/rc.d/rc.inet2
  220.  
  221.        /bin/mount linux:/nfs /mnt
  222.        /bin/insmod /mnt/ftape.o
  223.  
  224.  
  225.  
  226.  
  227.   Note that newer kernels will not require the insmod line.
  228.  
  229.   Next, create another new script, /tape144/bin/msdosset, as follows:
  230.   (change ``linux'' to reflect your Linux machine name).
  231.  
  232.  
  233.        #! /bin/sh
  234.  
  235.        /bin/sh /etc/rc.d/rc.inet1
  236.        /bin/sh /etc/rc.d/rc.inet2
  237.  
  238.        mount linux:/mnt /mnt
  239.        /bin/insmod /mnt/ftape.o
  240.  
  241.  
  242.  
  243.  
  244.   As above, newer kernels will not require the insmod line.
  245.  
  246.   Create a readable file, /tape144/root/notes, which contains this
  247.   helpful information for use in full recovery:
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.   For a full recovery to a trashed hard disk,
  266.   boot the Linux machine with the SAR disks #1 and #2
  267.   then type the following:
  268.  
  269.      /bin/sh /etc/rc.d/rc.inet1-l
  270.      /bin/sh /etc/rc.d/rc.inet2
  271.  
  272.      /usr/etc/rpc.portmap
  273.      /usr/etc/rpc.mountd
  274.      /usr/etc/rpc.nfsd
  275.  
  276.   Next, insert SAR disk #3 and type:
  277.  
  278.      mount /dev/fd0 /mnt
  279.  
  280.   Create a new mount point, with:
  281.  
  282.      mkdir /mnt2
  283.  
  284.   and mount your Linux hard disk partition on this point.
  285.   You may have to reformat the partition first, if so,
  286.   follow the directions in the Linux Installation HOWTO.
  287.   The SAR disks contain all the files necessary to do the reformat.
  288.  
  289.   Finally, use disks SAR#1 and SAR#2 to boot up
  290.   the MS-DOS machine and run the /bin/msdosset script on that machine.
  291.   It will take about a minute to run that script because it is getting
  292.   an NSF file from a floppy drive, so be patient.
  293.   Now, recover the tape to /mnt2 on the Linux machine.
  294.  
  295.  
  296.  
  297.  
  298.   If you are using the backup scripts you will need to copy 'afio' into
  299.   the /tape144/local/bin subdirectory.  It is not necessary to have the
  300.   rest of the backup script files on the recovery disks, an archive can
  301.   be recovered using only 'afio' and 'gzip'.
  302.  
  303.   I was unable to use the backup scripts as they come shipped.  The tape
  304.   archive appears to build cleanly, but it is unrecoverable.  I found
  305.   that removing the block size and conversion statements fixed it.  Here
  306.   is the patch to the ``netbackup'' script.  Apply this patch to the
  307.   Linux machine's hard disk copy of 'netbackup' as well as to the copy
  308.   on the SAR disks.
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.   *** netbackup.orig      Mon Jan  9 17:22:32 1995
  332.   --- netbackup   Mon Jan  9 17:23:25 1995
  333.   ***************
  334.   *** 35,41 ****
  335.                     "'mknod", devname, "p'");
  336.         exec ("su -", USERNAME, "-c",
  337.                     "'rsh ", REMOTE_HOST,
  338.   !                       "\"dd", "of=" REMOTE_DEVICE, "obs=20k", "conv=sync\"",
  339.                           "<", devname,
  340.                   "'&"
  341.            );
  342.   --- 35,41 ----
  343.                     "'mknod", devname, "p'");
  344.         exec ("su -", USERNAME, "-c",
  345.                     "'rsh ", REMOTE_HOST,
  346.   !                       "\"dd", "of=" REMOTE_DEVICE, "\"",
  347.                           "<", devname,
  348.                   "'&"
  349.            );
  350.   ***************
  351.   *** 50,56 ****
  352.                     "'mknod", devname, "p'");
  353.         exec ("su", USERNAME, "-c",
  354.                     "'rsh ", REMOTE_HOST,
  355.   !                       "\"dd", "if=" REMOTE_DEVICE, "ibs=20k", "conv=sync\"",
  356.                           ">", devname,
  357.                   "'&"
  358.            );
  359.   --- 50,56 ----
  360.                     "'mknod", devname, "p'");
  361.         exec ("su", USERNAME, "-c",
  362.                     "'rsh ", REMOTE_HOST,
  363.   !                       "\"dd", "if=" REMOTE_DEVICE, "\"",
  364.                           ">", devname,
  365.                   "'&"
  366.            );
  367.  
  368.  
  369.  
  370.  
  371.   You have now finished your SAR disk #2.  Write protect it.
  372.  
  373.   Next, mount a clean, formatted disk (create it with fdformat and
  374.   mkfs).  Copy the ftape.o file onto it, and label it SAR#3.  For some
  375.   reason things go badly if you write protect this disk, so leave it
  376.   write-enabled.
  377.  
  378.   On the Linux machine, create a new directory for NFS file serving.  I
  379.   made a directory:
  380.  
  381.  
  382.        /nfs
  383.  
  384.  
  385.  
  386.  
  387.   Put the ftape.o (unstripped, about 500+ kB) into this subdirectory.
  388.   Create an entry in your Linux's exports file /etc/exports:
  389.  
  390.  
  391.        /nfs    msdos(ro)
  392.  
  393.  
  394.  
  395.  
  396.   Note that all files in your NFS directory and it's subdirectories are
  397.   not secure.  Somebody else could boot the MS-DOS machine into Linux
  398.   with his own boot disks and mount this directory, so be certain that
  399.   you don't put anything sensitive in your NFS subdirectory.
  400.  
  401.   Restart your NFS daemons, rpc.mountd and rpc.nfsd.  They don't seem to
  402.   take kindly to a SIGHUP restart, so kill them and reinvoke them.  If
  403.   you're not activating these daemons in your /etc/rc.d/rc.inet2 you
  404.   might want to do so now.
  405.  
  406.   OK, now we're all set to back up and recover.  To make a full backup
  407.   from the Linux machine, boot the MS-DOS machine with SAR#1.  When
  408.   prompted for the second disk, load SAR#2. Log in as root, and execute
  409.   the script: /bin/tapesetup.  Log out of the MS-DOS machine.  If you're
  410.   using the backup scripts, the netbackup command will now work.  You
  411.   can also use the ``-f msdos:/dev/ftape'' switch on GNU tar, cpio, or
  412.   mt, and make your backup this way.  If you have a backup program,
  413.   which is only capable of writing to a local file, do the following.
  414.   Assume that the backup program is called ``localbackup'' and writes to
  415.   the file represented by its command line argument:
  416.  
  417.  
  418.        mknod /tmp/tapepipe p
  419.        rsh msdos dd of=/dev/ftape < /tmp/tapepipe &
  420.        localbackup /tmp/tapepipe
  421.  
  422.  
  423.  
  424.  
  425.   when it's done, delete /tmp/tapepipe.
  426.  
  427.   Recovering to a live Linux machine: the netbackup script, tar, cpio,
  428.   and so on will all work without special actions on the part of the
  429.   operator.  If you have a local recovery program which recovers from a
  430.   file, do this:
  431.  
  432.  
  433.        mknod /tmp/tapepipe p
  434.        rsh -n msdos dd if=/dev/ftape >> /tmp/tapepipe &
  435.        localrecovery /tmp/tapepipe
  436.  
  437.  
  438.  
  439.  
  440.   and delete /tmp/tapepipe when you're done.
  441.  
  442.   Notice that I'm using 'rsh' to the root user on the MS-DOS machine.
  443.   This works with a correct .rhosts entry.  The configuration on the
  444.   'tape144' disk allows rsh to root, but does not allow telnet or rlogin
  445.   to root, logins are restricted to the console.  This is good for
  446.   security.
  447.  
  448.   If you are worried about a root .rhost file, you can create a new user
  449.   on SAR#2, ``tapeuser'', with permissions to operate the tape drive but
  450.   not the disks (create a new group and put tapeuser in that group, then
  451.   chown and chmod the files /dev/rft* and /dev/nrft*).  Your backup
  452.   program then has to know to rsh to that username rather than to root.
  453.   Of course, now there must be an .rhosts file in ~tapeuser on SAR#2.
  454.   For my own use, I have chosen this course, rather than a root .rhosts.
  455.  
  456.   Finally, the directions for a complete recovery to a trashed hard
  457.   disk.  This assumes that the Linux partition is completely
  458.   unrecoverable.  If necessary, reformat that partition as described in
  459.   the Linux Installation HOWTO. Boot the Linux machine from SAR disk #1.
  460.   When prompted, insert disk #2.  Now, follow the directions in the file
  461.   /root/notes (this was /tape144/root/notes when it was mounted on your
  462.   Linux machine).  Once both machines have been booted up, run the
  463.   recovery routine you need.  If you are running the backup scripts you
  464.   can do it as follows:
  465.  
  466.   1. change directory to the mount point of the hard disk partition
  467.      which you will be recovering.
  468.  
  469.   2. if any mounted volumes are on the backup, and you want to recover
  470.      them, create the mount points within the hard disk partition and
  471.      mount the volumes.
  472.  
  473.   3. Enter the command:
  474.  
  475.  
  476.        rsh -n msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
  477.  
  478.  
  479.  
  480.  
  481.  
  482.   or
  483.  
  484.  
  485.        rsh -n -l tapeuser msdos dd if=/dev/ftape | afio -i -v -Z -c 1024 -
  486.  
  487.  
  488.  
  489.  
  490.  
  491.   or
  492.  
  493.  
  494.        mknod /tmp/backpipe p
  495.        rsh -n msdos dd if=/dev/ftape >> /tmp/backpipe &
  496.        afio -i -v -Z -c 1024 /tmp/backpipe
  497.  
  498.  
  499.  
  500.  
  501.  
  502.   This reads the tape on the remote machine, writing the result to std¡
  503.   out, where afio picks it up.  The '-i' switch tells it to recover the
  504.   files relative to the current working directory (which is the root of
  505.   the hard disk partition).  '-v' is verbose, listing the files as they
  506.   are recovered.  '-Z' tells afio that this is an archive of individu¡
  507.   ally compressed files.  '-c 1024' tells it to use a 5 MB streaming
  508.   buffer to avoid a lot of tape rewinding.
  509.  
  510.   3.  Notes
  511.  
  512.   The commands listed in the /tape144/root/notes file could be run from
  513.   a script.  When I tried, I got rpc setup errors.  I suspect it was
  514.   just that the commands were run too quickly, and the portmapper hadn't
  515.   properly installed itself.  I found that typing the sequence in
  516.   manually worked fine, so I've recommended that.
  517.  
  518.   I think this setup is secure.  Note that somebody can still get access
  519.   to all your files if they go to the tape drive and pull the tape out
  520.   before you get there, then then read the tape themselves.  People with
  521.   very sensitive data might consider encrypting the stream from the
  522.   archiver.  Archive to standard output and pipe the output to the
  523.   encrypter, and redirect the output of the encrypter to append to the
  524.   named pipe /tmp/tapepipe as described above. Note that errors in the
  525.   recovery process will result in all files after that point being
  526.   unrecoverable, as the entire archive is now a single DES-encrypted
  527.   stream.  It is possible to use options on afio to send each file in
  528.   the archive first through gzip, then into an encryption program like
  529.   des, but note that this compressing first does provide a fair amount
  530.   of known plaintext for determined code breakers to work with, so a
  531.   better approach might be to skip the gzip step and simply encrypt it
  532.   with des, at the expense of significantly more tape area. Needless to
  533.   say, DES encrypted files don't compress.
  534.  
  535.   The rc.inet1 directions I've included will allow only communication
  536.   with the local network, not the rest of the world through a gateway.
  537.  
  538.   During a full recovery to a blank hard disk the SAR disk #3 provides
  539.   ftape.o to the MS-DOS machine through NFS.  This is because some old
  540.   versions of the ftape module can't control some tape drives when there
  541.   is a disk mounted in the floppy drive. With newer kernels, the entire
  542.   NFS stuff can be omitted.
  543.  
  544.   This is very important.  ***TEST*** the SAR recovery procedure.  I
  545.   did, but don't leave anything to chance.  Make sure that you can
  546.   recover at least one file from your tape to the Linux machine using
  547.   only the SAR disks (i.e. without mounting the hard disk).  If you
  548.   can't reboot the Linux machine without inconveniencing a lot of users,
  549.   change the setup information on the SAR disks to assign the ``linux''
  550.   identity to another MS-DOS machine and then boot the two MS-DOS
  551.   machines into Linux to make sure everything works.  Then, change the
  552.   ``linux'' identity back again so that you have usable SAR disks.
  553.  
  554.   4.  Copyright
  555.  
  556.   Copyright Jan 10, 1995 by Christopher Neufeld
  557.   (neufeld@physics.utoronto.ca)
  558.  
  559.   Modified Feb 6, 1996.
  560.  
  561.   Modified Aug 5, 1997.
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.