当前位置 博文首页 > 备份shell脚本实例代码

    备份shell脚本实例代码

    作者:admin 时间:2021-02-08 12:23

    1、backup_run.sh
    复制代码 代码如下:

        #!/bin/sh
        # backup_run
        # script to run the backups
        # loads in a setting file for the user to change
        SOURCE=/home/bob/backup.defaults
        check_source()
        {
            # check_source
            # can we load the file
            # backup.defaults is the source file containing config/functions
            # make sure your path includes this directory you are runing from
            if [ -r $SOURCE ];then
              . $SOURCE # load $source
            else
                echo "`basename $0`: cannot locate default file"
                exit 1
            fi
        }
        header()
        {
            # header
            USER=`whoami`
            MYDATE=`date +%A" "%e" of "%B-%Y`
            clear
            cat << HH
            User: $USER $MYDATE
                        NETWORK SYSTEM BACKUP
                        =====================
        HH
        }
        change_settings()
        {
            # change_settings
            # let the user see the default settings..
            header
            echo "Valid Entries Are..."
            echo "Tape Device: rmt0,rmt1,rmt3"
            echo "Mail Admin:yes,no"
            echo "Backup Type: full,normal,sybase "
            while :
            do
                echo -n -c "\n\n Tape Device To Be Used For This Backup [$_DEVICE] :"
                read T_DEVICE
                : ${T_DEVICE:=$_DEVICE}
                case $T_DEVICE in
                    rmt0|rmt1|rmt3) break

                    *) echo "The device are either...rmt0,rmt1,rmt3"

                esac
            done
            # if the user hits return on any of the fields, the default value will be used
            while :
            do
                echo -n "Mail Admin When Done [$_INFORM] : "
                read T_INFORM
                : ${T_INFORM:=$_INFORM}
                case $T_INFORM in
                    yes|Yes) break

                    no|No) break

                    *) echo "The choices are yes,no"

                esac
            done
            while :
            do
                echo -n "Backup Type [$_TYPE] :"
                read T_TYPE
                : ${T_TYPE:=$_TYPE}
                case $T_TYPE in
                    Full|full) break

                    Normal|normal) break

                    Sybase|sybase) break

                    *) echo "The choices are either ... full,normal,sybase"
                esac
            done
            # re-assign the temp varialbes back to original variables that
            # were loaded in
            _DEVICE=$T_DEVICE;_INFORM=$T_INFORM;_TYPE=$T_TYPE
        }
        show_settings()
        {
            # display current settings
            cat << HH
                        Default Settings Are...
                    Tape Device To Be Used : $_DEVICE
                    Mail Admin When Done : $_INFORM
                    Type Of Backup : $_TYPE
                    Log File Of Backup : $_LOGFILE
        HH
        }
        get_code()
        {
            # users get 3 attempts at entering the correct code
            # _CODE is loaded in from the source file
            clear
            header
            _COUNTER=0
            echo "YOU MUST ENTER THE CORRECT CODE TO BE ABLE TO CHANGE DEFAULT SETTINGS"
            while :
            do
                _COUNTER=`expr $_COUNTER + 1`
                echo -n "Enter the code to change the settings: "
                read T_CODE
                # echo $_COUNTER
                if [ "$T_CODE" = "$_CODE" ];then
                    return 0
                else
                    if [ "$_COUNTER" -gt 3 ];then
                        echo "Sorry incorrect code entered, you cannot change the settings..."
                        return 1
                    fi
                fi
            done
        }
        check_drive()
        {
            # make sure we can rewind the tape
            mt -f /dev/$_DEVICE rewind > /dev/null 2>&1
            if [ $? -ne 0 ];then
                return 1
            else
                return 0
            fi
        }
        #====================== main =======================
        # can we source the file
        check_source
        header
        # display the loaded in variables
        show_settings
        # ask user if he/she wants to change any settings
        if continue_prompt "Do you wish To Change Some of The System Defaults" "Y";
        then
            echo $?   
            # yes then enter code name
            if get_code;then
                # change some settings
                change_settings
            fi
        fi
        #------------------ got settings... now do backup
        if check_drive;then
            echo "tape OK..."
        else
            echo "Cannot rewind the tape..Is it in the tape drive???"
            echo "check it out"
            exit 1
        fi
        # file system paths to backup
        case $_TYPE in
            Full|full)
                BACKUP_PATH="sybase syb/suppor etc var bin apps usr/local"

            Normal|normal)
                BACKUP_PATH="etc var bin apps usr/local"

            Sybase|sybase)
                BACKUP_PATH="sybase syb/suppor"

        esac
        # now for backup
        cd /
        echo "Now starting backup......"
        find $BACKUP_PATH -print | cpio -ovB -O /dev/$_DEVICE >> $_LOGFILE 2>&1
        # if the above cpio does not work on your system try cpio below, instead
        # find $BACKUP_PATH -print | cpio -ovB > /dev/$_DEVICE >> $_LOGFILE 2>&1
        # to get more information on the tape change -ovB to -ovcC66536
        if [ "$_INFORM" = "yes" ];then
            echo "Backup finished check the log file" | mail admin
        fi

    2、backup.defaults
    复制代码 代码如下:

        #!/bin/sh
        # backup.defaults
        # configuration default file for network backups
        # edit this file at your own
        # name backup.defaults
        # --------------------------------------------
        # not necessary for the environments to be in quotes.. but
        _CODE="comet"
        _LOGFILE="/appdva/backup/log.`date +%y%m%d`"
        _DEVICE="rmt0"
        _INFORM="yes"
        _TYPE="Full"
        #---------------------------------------------
        continue_prompt()
        {
            # continue_prompt
            # to call: continue_prompt "string to display" default_answer
            _STR=$1
            _DEFAULT=$2
            # check we have the right params
            if [ $# -lt 1 ];then
                echo "continue_prompt: I need a string to display"
                return 1
            fi
            while :
            do
                echo -n "$_STR [Y..N] [$_DEFAULT]:"
                read _ANS
                if [ "$_ANS" = "" ];then
                    : ${_ANS:=$_DEFAULT}
                    case $_ANS in
                        Y) return 0

                        N) return 1

                    esac
                fi
                # user has selected something
                case $_ANS in
                    y|Y|Yes|YES)
                        return 0

                    n|N|No|NO)
                        return 1

                    *) echo "Answer either Y or N, default is $_DEFAULT"

                esac
                echo $_ANS
            done
        }

    3、运行:
    复制代码 代码如下:

    $./backup_run.sh backup.defaults
    js
下一篇:没有了