Patrick
Group: Members
Posts: 333
Joined: Sep. 2004 |
|
Posted: Oct. 20 2004,18:48 |
|
Found a script to copy fast (48 seconds) diskettes. (what i want to add is: DCF (Dos-tool) is faster because it copies only the filled parts of the disk, and it can make disk-images! But i am happy with this script anyway)
: ########################################################################## # Shellscript: diskcopy - duplicate a 3.5" floppy disk # Author : Heiner Steven <heiner.steven@odn.de> # Date : 1995-06-03 # Category : System Administration # SCCS-Id. : @(#) diskcopy 1.3 04/02/18 ########################################################################## # Portability # Tested with Solaris 2.5, (SuSE) Linux 5.2. # Should work with AT&T System V Release 4 ##########################################################################
PN=`basename "$0"` # program name VER='1.3'
# Determine the device name of a 3.5" floppy device # (Solaris, Linux, System V Release 4)
for floppydev in "$FLOPPY" /dev/rfd0 /dev/fd0 /dev/dsk/f03ht do [ -c "$floppydev" ] || [ -b "$floppydev" ] || continue FLOPPY=$floppydev break done : ${FLOPPY:=/dev/rfd0}
: ${EJECT:=eject} # Command to eject floppy from drive DiskBS=18k FileBS=18k
Tmp=${TMPDIR:=/tmp}/dc$$
Usage () { echo "$PN - duplicate 3.5\" floppy disks, $VER (hs '95) usage: $PN source target
The default source device is FLOPPY=$FLOPPY. If no target device is specified, a temporary file is used. If a target device is given, a two-drive-copy is assumed." >&2 exit 1 }
Msg () { for i do echo "$i" >&2 done }
Fatal () { Msg "$@"; exit 1; }
# echon - "echo" without newline echon () { if [ X"$ECHON" = X ] then # Determine how to "echo" without newline: "echo -n" or "echo ...\c" if [ X`echo -n` = X-n ] then ECHON=echo; NNL="\c" else ECHON="echo -n"; NNL="" fi
fi $ECHON "$*$NNL" }
GetYN () { while : do echo >&2 echon >&2 "$@" read answer || exit 2 case "$answer" in [yYjJ]*) return 0;; [nN]*) return 1;; [qQ]*) exit 0; esac Msg "" "Enter 'y' for yes or 'n' for no" "Please try again" done }
# Try to eject floppy disk. If the eject command fails, do not try # again (Linux/SVR4 do not have an "eject" command)
EjectFloppy () { ($EJECT) >/dev/null 2>&1|| EJECT=; }
Out="$Tmp" while [ $# -gt 0 ] do case "$1" in --) shift; break;; -h) Usage;; -*) Usage;; *) break;; # First file name esac shift done
if [ $# -gt 2 ] then Usage elif [ $# -ge 2 ] then Out="$2" elif [ $# -ge 1 ] then FLOPPY="$1" fi
[ "$FLOPPY" = "$Out" ] && Fatal "cannot read and write to the same device"
trap "rm -f $Tmp > /dev/null 2>&1" 0 trap "exit 2" 1 2 3 15
n=1 while GetYN "Copy Disk $n (y/n, q)? " do Msg "Reading Disk $n..." if dd if=$FLOPPY of=$Out ibs=$DiskBS obs=$FileBS then EjectFloppy if [ "$Out" = "$Tmp" ] then Copy=1 while GetYN "WRITE new Copy $Copy (y/n, q)? " do Msg "Writing copy $Copy..." if dd if=$Out ibs=$FileBS of=$FLOPPY obs=$DiskBS then Msg "Copy $Copy successfully written." Copy=`expr ${Copy:-1} + 1` else Msg "" "Could not write to floppy disk!" \ "Please check the disk drive, and try again" fi EjectFloppy done fi else Msg "" "Cannot read floppy disk!" \ "Please check the disk drive, and try again" EjectFloppy continue fi n=`expr ${n:-1} + 1` done
****************************************************************** Enjoy!
-------------- Usb-stick sandisk cruzer titanium 512 Mb: DSL 2.3 (final) Firefox (Mozilla 1.06) WM -biff -cdplay -clockmon -smixer -usic -top -net -biff -ifinfo -cpuload gps vnc LinNeighborhood (samba) QtParted bdc xawtv imagemagick xplanet
|