| #/bin/sh ########################################################################## # script:      
			backup.sh # Author:      
			Shi WJ # Date:        
			2008.12. # Purpose:     
			Backup disk to an compressed image file. ########################################################################## SOURCE_DISK=sda TARGET_DIR=/media/sdb1/S10-2/`date
			+"%Y_%m%d"` # Note:
			you need to make sure that the source disk is correct, and the #       target
			directory is changed to correctly reflect your system. 
 if [ $# -gt 1 ] then         echo
			"Usage:"         echo "
			 backup.sh [noClean]"         echo "
			 Without [noClean], cleaning is automatic."         exit -1 fi CLEAN=Y if [ $# -eq 1 ] then         if [ $1 !=
			"noClean" ]         then                 echo
			"Usage:"                 echo
			"  backup.sh [noClean]"                 echo
			"  Without [noClean], cleaning is automatic."                 exit
			-1         fi         CLEAN=N         echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Starting Disk backup
			in 'noCleaning' Mode." else         echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Starting Disk backup
			in 'Cleaning' Mode."         echo "
			                 FYI, './backup.sh noClean' could be used for
			Non-cleaning mode backup." fi 
 echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Source Disk to be
			backed up: $SOURCE_DISK" echo `date
			+"%Y/%m/%d %H:%M:%S"` "      The backup image will
			be located in: $TARGET_DIR" 
 echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Checking the backup
			source directory..." SOURCE_MOUNTED=N for SOURCE_DIR in
			/media/${SOURCE_DISK}* do         if [ -d
			${SOURCE_DIR} ]         then                 echo
			`date +"%Y/%m/%d %H:%M:%S"` "      Source Mounted:
			${SOURCE_DIR}"                 SOURCE_MOUNTED=Y         fi done 
 if [
			${SOURCE_MOUNTED} = "N" ] then         echo `date
			+"%Y/%m/%d %H:%M:%S"` "      No source directory is
			not mounted. Exiting..."         exit -1 fi 
 echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Checking the backup
			target directory..." if [ ! -d
			${TARGET_DIR} ] then         echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Backup target
			directory ${TARGET_DIR} does not exist. Creating..."         mkdir
			${TARGET_DIR}         if [ $?
			-eq 0 ]         then                 echo
			`date +"%Y/%m/%d %H:%M:%S"` "      Backup target
			directory ${TARGET_DIR} created."         else                 echo
			`date +"%Y/%m/%d %H:%M:%S"` "      Failed to create
			backup target directory ${TARGET_DIR}. Exiting..."                 exit
			-1         fi else         echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Backup target
			directory ${TARGET_DIR} exists." fi 
 if [ $CLEAN = "Y"
			] then         echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Ready to clean the
			free space in source disk before backup."         for
			SOURCE_DIR in /media/${SOURCE_DISK}*         do                 if
			[ -d ${SOURCE_DIR} ]                 then                         echo
			`date +"%Y/%m/%d %H:%M:%S"` "      Cleaning unused
			space of ${SOURCE_DIR}..."                         dd
			if=/dev/zero of=${SOURCE_DIR}/zerofile bs=512k                         rm
			${SOURCE_DIR}/zerofile                 fi         done else         echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Source disk cleaning
			skipped." fi 
 echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Backup the entire hard
			disk to the image file..." dd if=/dev/sda
			ibs=512k | gzip > ${TARGET_DIR}/img.gz echo `date
			+"%Y/%m/%d %H:%M:%S"` "      Backup complete. The
			image file: ${TARGET_DIR}/img.gz" 
 echo "gzip
			-dc $TARGET_DIR/img.gz | dd of=/dev/sda obs=512k &" >
			$TARGET_DIR/restore.sh echo `date
			+"%Y/%m/%d %H:%M:%S"` "      restore.sh created
			${TARGET_DIR}/restore.sh" echo "Good-bye" exit 0 |