实现通用的本地与远程数据备份SHELL脚本
2012-06-01 23:50:41   来源:我爱运维网   评论:0 点击:

备份工作是运维人员必须需要完成的,常规的,且极其重要的工作内容。备份操作常用于日常维护,升级,迁移,灾难恢复,一个通用的重要的备份...
运行的日志文件
BACKUP_LOG="$ROOT/backup.log"
 
# environment
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
 
###################
 
OS=`uname -s`
case $OS in
FreeBSD)
        ECHO=/bin/echo
        CAT=/bin/cat
        GREP=/usr/bin/grep
        AWK=/usr/bin/awk
        HEAD=/usr/bin/head
        TAR=/usr/bin/tar
        GZIP=/usr/bin/gzip
        WHICH=/usr/bin/which
        FTP=/usr/bin/ftp
        MD5=/sbin/md5
        CHMOD=/bin/chmod
        SCP=/usr/bin/scp
;;
 
SunOS)
        ECHO=/usr/bin/echo
        CAT=/usr/bin/cat
        GREP=/usr/bin/grep
        AWK=/usr/bin/awk
        HEAD=/usr/bin/head
        TAR=/usr/bin/tar
        GZIP=/usr/local/bin/gzip
        WHICH=/usr/bin/which
        FTP=/usr/bin/ftp
        MD5=/usr/local/bin/md5
        CHMOD=/usr/bin/chmod
                SCP=/usr/local/bin/scp
;;
 
Linux)
        ECHO=/bin/echo
        CAT=/bin/cat
        GREP=/bin/grep
        AWK=/bin/awk
        HEAD=/usr/bin/head
        TAR=/bin/tar
        GZIP=/bin/gzip
        WHICH=/usr/bin/which
        FTP=/usr/bin/ftp
        MD5=/usr/bin/md5sum
        CHMOD=/bin/chmod
                SCP=/usr/bin/scp
;;
 
*)
        echo 'only support FreeBSD/SunOS/Linux'
        exit
;;
esac
 
if [ ! -d $ROOT ]
then
        $ECHO "请定义程序运行的ROOT!"
        exit
fi
 
if [ ! "$BASE" ]
then
        echo "定义需要备份的数据,请配置BASE变量!"
        exit
fi
 
HOST="`$CAT /etc/hosts | $GREP -i \`hostname\` | $GREP -v \"^#\" | $HEAD -1 | $AWK '{print $1}'`"
LOCAL_DIR="${ROOT}/bak_data"
REMOTE_DIR="bak_data"
 
if [ ! -d $LOCAL_DIR ];then
  mkdir $LOCAL_DIR
fi
 
cd $LOCAL_DIR
BACKUP_FILE="${HOST}_data.$DATE.tar.gz"
$TAR cf - $BASE --exclude=$EXFILE | $GZIP -qc > $BACKUP_FILE
$CHMOD 644 $BACKUP_FILE
 
chown -R backup.backup ${BACKUP_FILE}
su - backup -c "$SCP -r

相关热词搜索:SHELL 备份脚本 备份方法

上一篇:活用awk高效进行文本或日志分析处理
下一篇:有用的Nginx日志分析awk脚本

分享到: 收藏
评论排行