手机
当前位置:查字典教程网 >脚本专栏 >linuxshell >备份shell脚本实例代码
备份shell脚本实例代码
摘要:1、backup_run.sh复制代码代码如下:#!/bin/sh#backup_run#scripttorunthebackups#loa...

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

【备份shell脚本实例代码】相关文章:

linux中mysql备份shell脚本代码

一天一个shell命令 linux文本内容操作系列-cut命令详解

防止shell脚本重复执行的代码

Shell脚本实现自动输入密码登录服务器

shell写的告警次数控制及恢复示例代码

shell 进度条实现代码

shell监控脚本 准备工作分享

VPS自动备份数据库到FTP的脚本代码

shell脚本监控系统负载、CPU和内存使用情况

Bash Shell脚本学习小结

精品推荐
分类导航