备份shell脚本实例代码

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/

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 “nn 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

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容