#!/bin/sh


modprobe usb-storage
modprobe vfat
which bc >/dev/null 2>&1 || echo please install the package \"bc\" first.
which bc >/dev/null 2>&1 || exit

printf "USB key device= [/dev/sda1] ? "
read device
if [ -z "$device" ]; then device="/dev/sda1"; fi
mountpoint=/mnt/test$$
infile=/bin/bash
outfile=$mountpoint/test$$
mkdir $mountpoint
minblocksize=512
maxblocksize=1048576
blocksize=$minblocksize
filesize=`ls -s $infile |awk '{print $1}'`
echo "Testing write speed with a ${filesize}kB file..."
cleanquit() {
  rm -f $outfile; umount $mountpoint; rmdir $mountpoint; exit
}
trap cleanquit INT
trap cleanquit TERM
trap cleanquit QUIT
trap cleanquit HUP

while [ $blocksize -le $maxblocksize ]; do
	printf "blocksize=$blocksize ..."
	mount $device $mountpoint
	rm -f $outfile
	time=`/usr/bin/time -f "%e" dd if=$infile of=$outfile obs=$blocksize 2>&1 |tail -1`
	time2=`/usr/bin/time -f "%e" umount $mountpoint 2>&1`
	speed=`echo "$filesize / ( $time + $time2 )"|bc`
	echo " $speed kB/s"
	blocksize=$(($blocksize*2))
done
mount $device $mountpoint
rm -f $outfile
printf "normal copy operation with 'cp'... "
time=`/usr/bin/time -f "%e" cp $infile $outfile 2>&1`
time2=`/usr/bin/time -f "%e" umount $mountpoint 2>&1`
speed=`echo "$filesize / ( $time + $time2 )"|bc`
echo "$speed kB/s"
rmdir $mountpoint

