Scripts to dump to a remote CD burner.
authorStelian Pop <stelian@popies.net>
Fri, 17 May 2002 08:10:43 +0000 (08:10 +0000)
committerStelian Pop <stelian@popies.net>
Fri, 17 May 2002 08:10:43 +0000 (08:10 +0000)
CHANGES
THANKS
examples/dump_on_remote_cd/README [new file with mode: 0644]
examples/dump_on_remote_cd/dump-to-remote-cd [new file with mode: 0755]
examples/dump_on_remote_cd/get-dumpdata-to-cdrecord [new file with mode: 0755]

diff --git a/CHANGES b/CHANGES
index a02710ce089820f191fbbde3ea9635d860672cfd..0f1cedb5c59bf1d47d750d40c6b393099cc8fa2e 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,4 @@
-$Id: CHANGES,v 1.175 2002/05/16 21:22:36 stelian Exp $
+$Id: CHANGES,v 1.176 2002/05/17 08:10:43 stelian Exp $
 
 Changes between versions 0.4b28 and 0.4b29 (released ??????????????)
 ====================================================================
@@ -23,6 +23,10 @@ Changes between versions 0.4b28 and 0.4b29 (released ??????????????)
        of dump: http://www.FreeBSD.org/cgi/query-pr.cgi?pr=32414
        Thanks to Ted Grzesik <tedgyz@roostme.com> for reporting the bug and 
        help testing the patch.
+
+4.     Added some example scripts from Gerd Bavendiek <bav@epost.de>
+       which makes one able to pipe the output of dump, by the net, to
+       a remote CD-burner server.
        
 Changes between versions 0.4b27 and 0.4b28 (released April 12, 2002)
 ====================================================================
diff --git a/THANKS b/THANKS
index c2dd1369fbcab1f05ae20ab24f553ebb346a3aef..cc4dde5857584e6fc25bb9d35592f4a0ef72af48 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -1,4 +1,4 @@
-$Id: THANKS,v 1.58 2002/05/16 21:22:36 stelian Exp $
+$Id: THANKS,v 1.59 2002/05/17 08:10:43 stelian Exp $
 
 Dump and restore were written by the people of the CSRG at the University
 of California, Berkeley.
@@ -24,6 +24,7 @@ Eros Albertazzi               eros@lamel.bo.cnr.it
 John Adams             johna@onevista.com
 Andrea Arcangeli       andrea@suse.de
 Stephen Atwell         satwell@urbana.css.mot.com
+Gerd Bavendiek         bav@epost.de
 Stan Bubrouski         satan@fastdial.net
 Stephen Carr           sgcarr@civeng.adelaide.edu.au
 Rob Cermak             cermak@ahab.rutgers.edu
diff --git a/examples/dump_on_remote_cd/README b/examples/dump_on_remote_cd/README
new file mode 100644 (file)
index 0000000..d07761d
--- /dev/null
@@ -0,0 +1,35 @@
+> I'll be more than happy to put a copy of your scripts in the dump
+> distribution once you'll get this work :-)
+
+So you may have a look at the enclosed scripts.
+
+I use rsh in both directions. This may easily be changed to ssh.
+
+Basically three scripts are now necessary. The first wraps around the
+dump-command, the second acts as user exit when CD has to be changed
+and the third has to be run on the remote box.
+
+To make things easier I put the first two into one file called
+dump-to-remote-cd. The second file called get-dumpdata-to-cdrecord must
+be copied to the box with the CD-Burner. There is a small
+configuration section in it to get cdrecord to work.  
+
+dump-to-remote-cd may be called with the capacity of the media which
+is used and / or a filesystem argument passed to dump.
+
+Usage is: 
+
+dump-to-remote-cd [ -c <CD_capacity> ] [files to dump ...]
+
+There are defaults in the scripts which are used if any of these
+arguments are missing. The hostname of the box with the CD-burner
+has to be edited in any case.
+
+Kind regards
+
+Gerd
+
+------------------------------------------------------------------------
+Gerd Bavendiek                             Linux Laptop Users check out:
+bav@epost.de                               http://netenv.sourceforge.net
+------------------------------------------------------------------------
diff --git a/examples/dump_on_remote_cd/dump-to-remote-cd b/examples/dump_on_remote_cd/dump-to-remote-cd
new file mode 100755 (executable)
index 0000000..cefc321
--- /dev/null
@@ -0,0 +1,98 @@
+#!/bin/bash
+#ident "@(#) dump-to-remote-cd Time-stamp: <02/05/06 15:12:29 bav> "
+#******************************************************************
+# dump-to-remote-cd
+#******************************************************************
+#                              Gerd Bavendiek bav@epost.de 02-05-02
+#
+# Script used to dump to a remote box with a CD-Burner. There is a
+# companion script called get-dumpdata-to-cdrecord.
+# 
+# Usage: dump-to-remote-cd [ -c <CD_capacity> ] [files to dump ...]
+#
+# If called without arguments, it will dump / assuming 650 MB Media on
+# host kiki (see DEFAULT_ below).
+#
+# You must be able to do an rsh as root to BURN_HOST and vice versa,
+# see get-dumpdata-to-cdrecord. You may use ssh instead.
+#------------------------------------------------------------------
+
+#--- Customize to fit your needs ----------------------------------
+
+PATH_TO_GET_DUMPDATA_TO_CDRECORD=/root/tools/get-dumpdata-to-cdrecord
+PATH_TO_XTERM=/usr/X11R6/bin/xterm
+
+FIFO_NAME=/tmp/get-dumpdata-to-cdrecord.fifo
+
+BURN_HOST=kiki
+
+DEFAULT_CD_CAPACITY=650
+DEFAULT_FS=/
+
+#--- End of customizing -------------------------------------------
+
+USER_EXIT=$0
+
+Usage(){
+echo >&2 "Usage: `basename $0` [ -c <CD_capacity> ] [files to dump ...]"
+  exit 1
+}
+
+if [ `id -u` != 0 ]; then 
+  echo "$0: ERROR: root priviledges are required ..."
+  exit 1
+fi
+
+# Check whether first argument is a named pipe
+if [ -p "$1" ]; then
+   # We are called internally either from ourselves or from dump 
+   FIFO_NAME=$1
+   num=$[$2+1]
+   tput bel;sleep 1; tput bel
+   echo "Insert next CD (number $num) ..."
+   read -p "CD number $num ready ? " Ans
+   DUMP_HOST=`uname -n`
+   rsh $BURN_HOST \
+   $PATH_TO_XTERM -hold -T "Dump_CD_number_$num" -cr red -fn 6x10 -e \
+   $PATH_TO_GET_DUMPDATA_TO_CDRECORD -d $DUMP_HOST -f $FIFO_NAME &
+   exit 0
+fi
+
+CD_CAPACITY=$DEFAULT_CD_CAPACITY
+FS=$DEFAULT_FS
+
+# We will reach this code only when not called internally
+while getopts "b:c:h" c; do
+  case $c in
+   c) # Media Capacity
+      CD_CAPACITY=$OPTARG
+      ;;
+   h) # help those who ask for help
+      Usage
+      ;;
+   '?') # any other switch
+      Usage
+      ;;
+  esac
+done
+
+shift `expr $OPTIND - 1`
+
+if [ -n "$*" ]; then FS="$*"; fi
+
+DumpLevel=0               # level 0 dump
+Label=`date -I`           # Take today's date as label, e.g. 2002-05-02
+
+eval Capacity=$(($CD_CAPACITY*1024))
+
+# Remove the fifo on the server and make a new one
+rm -f $FIFO_NAME; mkfifo $FIFO_NAME
+
+# Call user exit for the very first time, all further calls will be
+# done via dump
+$USER_EXIT $FIFO_NAME 0 
+sleep 2
+
+# Run dump
+dump -z -B$Capacity -F $USER_EXIT -$DumpLevel -L $Label -f $FIFO_NAME $FS
+
diff --git a/examples/dump_on_remote_cd/get-dumpdata-to-cdrecord b/examples/dump_on_remote_cd/get-dumpdata-to-cdrecord
new file mode 100755 (executable)
index 0000000..ef7f226
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+#ident "@(#) get-dumpdata-to-cdrecord Time-stamp: <02/05/06 13:49:28 bav> "
+#******************************************************************
+# get-dumpdata-to-cdrecord
+#******************************************************************
+#                              Gerd Bavendiek bav@epost.de 02-05-02
+#
+# This script runs on the box which has the CD-Burner. It starts an
+# rsh on the box where dump is started and feeds the data to
+# cdrecord. You should have copied it to
+# PATH_TO_GET_DUMPDATA_TO_CDRECORD, see script dump-to-remote-cd.
+# 
+# You definitely may wish to customize the cdrecords arguments below !
+#
+# If rsh is not appropiate for you, change to ssh.
+#------------------------------------------------------------------
+
+CDRECORD_TESTMODE=""             # This means: burn !
+###CDRECORD_TESTMODE="-dummy"       # and this: not really ...
+CDRECORD_DEVICE="1,0"            # Run cdrecord --scanbus if in doubt
+CDRECORD_SPEED=2                 # Speed of your burner
+CDRECORD_BUFFERSIZE=16m          # Buffersize in MByte
+
+#------------------------------------------------------------------
+Usage()
+{
+   echo >&2 "Usage: `basename $0` -d <dump_host> -f <fifo_name>"
+   exit 1
+}
+
+CDRECORD_ARGLIST="-v $CDRECORD_TESTMODE dev=$CDRECORD_DEVICE speed=$CDRECORD_SPEED fs=$CDRECORD_BUFFERSIZE"
+
+while getopts "d:f:h" c; do
+  case $c in
+   d) # the dump host
+      DUMP_HOST=$OPTARG
+      ;;
+   f) # name of the fifo cdrecord has to read the data from
+      FIFO_NAME=$OPTARG
+      ;;
+   h) # help those who ask for help
+      Usage
+      ;;
+   '?') # any other switch
+      Usage
+      ;;
+  esac
+done
+
+if [ -z "$DUMP_HOST" -o -z "$FIFO_NAME" ]; then Usage; fi
+
+rsh $DUMP_HOST dd if=$FIFO_NAME | cdrecord $CDRECORD_ARGLIST -eject -pad -data -
+if [ $? -ne 0 ]; then
+   echo $0: `date '+%T'`: ERROR: Check cdrecords messages
+   exit 1
+fi
+
+# Local Variables:
+# rcpbuf-todo: ("/[root@kiki]/root/tools")
+# End: