⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backitup

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻
字号:
#!/bin/sh5##########################################################################			Copyright (c) 1988, 1989 by#		Digital Equipment Corporation, Maynard, MA#			All rights reserved.##	This software is furnished under a license and may be used and#	copied  only  in accordance with the terms of such license and#	with the  inclusion  of  the  above  copyright  notice.   This#	software  or  any  other copies thereof may not be provided or#	otherwise made available to any other person.  No title to and#	ownership of the software is hereby transferred.		##	The information in this software is subject to change  without#	notice  and should not be construed as a commitment by Digital#	Equipment Corporation.					##	Digital assumes no responsibility for the use  or  reliability#	of its software on equipment which is not supplied by Digital.##	SCCSID = "@(#)backitup	4.2	(ULTRIX)	8/5/90"##	000	Jonathan Wallace	1-Jun-1990###	001	James C. Overman	05-Aug-1990#	    Moved references to /tmp to /usr/tmp #	    ######################################################################################################################## Set variables, constants, and environment ##############################################set -htrap 'Cleanup_Routine; exit 1' 0 1 2 3 18LL=""######################################################################### Subroutines #####################################################: Cleanup_Routine - Remove usr/tmp files#####################################Cleanup_Routine(){	rm -f /usr/tmp/DEV.list /usr/tmp/DEV.menu 	rm -f /usr/tmp/MFS.list /usr/tmp/MFS.menu}#####################################################################: Select_Device_Routine##	RETURN CODES#		0 - Successful #		1 - Error that warrants termination of program#		3 - Input error (call function again)#		5 - User Termination (selected "none of the above")######################################################################Select_Device_Routine(){	[ -s /usr/tmp/DEV.menu ] ||	{		clear		echo "${LL}*** SYSTEM BACKUP PROCEDURE ***"		echo "	Working ... `date` \c"        	echo "*** SYSTEM BACKUP PROCEDURE ***Select the backup device from the menu below: ${LL}" >/usr/tmp/DEV.menu		X=0		FOUNDFLAG=0		for K in /dev/rmt*		do			FI=`file $K`			FI=`expr "$FI" : '\(.*\)tape'`			FI=`expr "$FI" : '.*[#][0-9][0-9]*\(.*\)'`			case $? in			0 )				X=`expr $X + 1`				case $X in				[0-9])					X=" $X"					;;				esac				FOUNDFLAG=1				echo "$K" >>/usr/tmp/DEV.list				echo "	${X} - $K$FI Tape" >>/usr/tmp/DEV.menu				;;			esac		done		case $FOUNDFLAG in		1 )			NODEV=`expr $X + 1`			case $NODEV in			[0-9])				NODEV=" $NODEV"				;;			esac			echo "	${NODEV} - None of the above" >>/usr/tmp/DEV.menu			;;		* )			clear			echo "*** SYSTEM BACKUP PROCEDURE ***No valid backup devices found on this machine.  Check to make sure abackup device is actually connected to the machine, or contact yoursystem administrator.Press <RETURN> to continue: \c"			read resp			return 1			;;		esac	}	clear        more /usr/tmp/DEV.menu        echo "${LL}Enter your choice [1]: \c"        read DEVNUM        case $DEVNUM in        "" )                DEVNUM=1		return 0                ;;	[0-9] | [0-9][0-9] | [0-9][0-9][0-9] )		[ $DEVNUM -eq $NODEV ] && return 5                [ $DEVNUM -gt $NODEV ] &&		{			echo "${LL}Invalid Choice: $I (out of range)"			echo "Press <RETURN> to continue: \c"			read resp			return 3		}		return 0		;;        * )		return 3                ;;        esac}#######################################################: Get_Device_Routine -#######################################################Get_Device_Routine(){	X=0	set - `cat /usr/tmp/DEV.list`	while [ $# -gt 0 ]	do		X=`expr $X + 1`		case $X in		$DEVNUM )			DEVICE=$1			return 0			;;		* )			shift			;;		esac	done	return 1}#####################################################################: Select_FS_Routine##	RETURN CODES#		0 - Successful #		1 - Error that warrants termination of program#		3 - Input error (call function again)#		5 - User Termination (selected "none of the above")######################################################################Select_FS_Routine(){	[ -s /usr/tmp/MFS.menu ] ||	{		clear		echo "${LL}*** SYSTEM BACKUP PROCEDURE ***"		echo "	Working ... `date` \c"		echo "*** SYSTEM BACKUP PROCEDURE ***Select the file system(s) you want to backup from the menu below:  Selection	Device			File System -----------------------------------------------------------------------------" >/usr/tmp/MFS.menu	        X=0		SP="                                     "		FW="................"		MENNUM=		FOUNDFLAG=0		mount | grep "^\/dev" >/usr/tmp/MFS.list		set xxx `cat /usr/tmp/MFS.list`		while [ $# -gt 0 ]		do			case $1 in			/dev* )				X=`expr $X + 1`				MENNUM="$MENNUM $X"				case $X in				[0-9])					X=" $X"					;;				esac				FOUNDFLAG=1				FORMAT="$1$SP"				FORMAT=`expr "$FORMAT" : '\('$FW'\).*'`				echo "    $X		$FORMAT	$3" >>/usr/tmp/MFS.menu				shift				;;			* )				shift				;;			esac		done			case $FOUNDFLAG in		1 )			ALLNUM=`expr $X + 1`			NONUM=`expr $ALLNUM + 1`			case $ALLNUM in			[0-9])				ALLMEN=" $ALLNUM"				;;			* )				ALLMEN=$ALLNUM				;;			esac			case $NONUM in			[0-9])				NOMEN=" $NONUM"				;;			* )				NOMEN=$NONUM			esac			echo "    ${ALLMEN}		All of the above    ${NOMEN}		None of the above -----------------------------------------------------------------------------" >>/usr/tmp/MFS.menu			;;		* )			clear			echo "*** SYSTEM BACKUP PROCEDURE ***No locally mounted file systems found on this machine.  This proceduredoes not support backups of remotely mounted file systems.  Read theGuide to Backup and Restore for information about backing up remotelymounted file systems, or contact your system administrator.Press <RETURN> to continue: \c"			read resp			return 1			;;		esac	}	clear	more /usr/tmp/MFS.menu	echo "${LL}Enter your choice(s), for example, 1 2 : \c"	read FS_SELECTIONS	case $FS_SELECTIONS in	"" )		return 3		;;	$NONUM )		return 5		;;	* )		return 0		;;	esac}############################################: Sort_Routine - Sort the input by the user##	RETURN CODES#		0 - Successfull #		1 - Error#############################################Sort_Routine(){	NONE=$1	SORTED=	set - $FS_SELECTIONS	for I in $FS_SELECTIONS	do		# is it a number?		J=`expr $I : '\([0-9][0-9]*\)'`		case $I in		$J)	;;		*)	echo "${LL}Invalid choice: $I (not a number)"			return 1			;;		esac		# is it in range?		[ $I -gt $NONE ] &&		{			echo "${LL}Invalid Choice: $I (out of range)"			return 1		}		HI=$SORTED LO=		# insert # into sorted list...		for J in $SORTED		{			case "$I" in			$J)	I=				break				;;			esac			if [ $I -gt $J ]			then				LO="$LO $J"				set xx $HI				shift;shift				HI=$*			else				break			fi		}		SORTED="$LO $I $HI"	done}###############################: Verify_Choice_Routine###############################Verify_Choice_Routine(){	clear	BACKUPLIST=	case $FS_SELECTIONS in	$ALLNUM )		SORTED=$MENNUM		;;	esac			echo "You want to backup the following filesystems:	Device		 File System------------------------------------------------------------------------------"	for K in $SORTED	do		X=0		set xxx `cat /usr/tmp/MFS.list`		while [ $# -gt 0 ]		do			case $1 in			/dev* )				X=`expr $X + 1`				case $K in				$X )					BACKUPLIST="$BACKUPLIST $1 $3"					FORMAT="$1$SP"					FORMAT=`expr "$FORMAT" : '\('$FW'\).*'`					echo "	$FORMAT $3" 					continue 2					;;				* )					shift					;;				esac				;;			* )				shift				;;			esac		done	done	echo "------------------------------------------------------------------------------"	echo "${LL}Is this correct? (y/n) [y]: \c"	read resp	case $resp in	"" | [Yy]* )		return 0		;;	[Nn]* )		return 1		;;	* )		Verify_Choice_Routine		;;	esac}###########################################: Backup_Routine - Do the actual backup###########################################Backup_Routine(){	set - $BACKUPLIST	while [ $# -gt 0 ]	do		clear		echo "*** SYSTEM BACKUP PROCEDURE ***Backing up $2, mounted on $1Please put a backup tape in $DEVICE, then make sure that thetape is write enabled, and that the tape drive is on-line.  Press<RETURN> when ready: \c"		read resp		echo		dump 0uf $DEVICE $1		case $? in		1 )			echo "${LL}Press <RETURN> to continue: \c"			read resp			shift 2			continue			;;		* )			echo "*** SYSTEM BACKUP PROCEDURE ***An error has occured while attempting to backup file system	$2located on device $1.  Check the Guide to System Backup andRestore for more information on system backup procedures, orcontact your system administrator. Press <RETURN> to continue: \c"			read resp			return 1			;;		esac	done	return 0}############################################ Program Procedure Routine###########################################while :do	Select_Device_Routine	case $? in	0 ) 		Get_Device_Routine		break		;;	1 ) exit 1 ;;	3 ) continue ;;	5 ) exit 0 ;;	esacdonewhile :do	Select_FS_Routine	case $? in	0 ) 		Sort_Routine $NONUM		case $? in		1 )			echo "${LL}Press <RETURN> to re-enter choice(s): \c"			read resp			continue			;;		esac		Verify_Choice_Routine		case $? in		0 )			break			;;		1 )			continue			;;		esac		;;	1 ) exit 1 ;;	3 ) continue ;;	5 ) exit 0 ;;	esacdoneBackup_Routinecase $? in0 )	exit 0	;;1 )	exit 1	;;esac

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -