Linux系统上实现数据自动化备份方案

Linux系统上实现数据自动化备份方案

相对windows而言,linux上的自动备份相对会复杂一些,但通过kinponet技术清晰描述整个过程之后也会变的相当简单, 几步即可完成操作,以下对每个参数都进行了清晰的解释,如有不明白之处,可联系我们; “#”表示注解,是不执行的

#! /usr/bin/env bash

###-------------------------------###
#     User Variables       #
###-------------------------------##

backupSrc=/var/www/html:/etc/passwd # 表示要备份文件路径,不同文件夹用“:”分隔

backupDest=/backup                  # 这个参数不用去更改

removePrevious=y                    # 服务器上是否需要保存本备文件 #default remove previous

DATENAME=`date +%Y%m%d%H%M`         # 根据不同日期产生不同名称备份文件

tmpPath=/backup/tmp$DATENAME        # 临时文件路径,不用更改

mkdir -p /backup/tmp$DATENAME       # 临时文件路径,不用更改
###     配置 FTP      ###
useFTP=y                             # 是否需要备份到远程FTP上   # y or n

user=xxxxx                           # FTP帐号  
password=xxxxxx  # FTP密码
serverAndPath=ip/123123/             # FTP服务器和路径,  # default put server root path
ftpServer=ftp://$user:$password@$serverAndPath   # 参数不用改  
#  Syntax for ftpserver:  ftp://user:pass@ftp.server.com/folder 
 (WITHOUT Trailing /) 不用管;
###    配置数据库Mysql     ###
mysqlFlag=y                         # 是否需要备份数据库  # default backup database

mysqlUser=xxxxx                     # 数据库备份帐号 

mysqlPassword=xxxxxxxxxxxxx         #数据库备份密码

argv=" --all-databases --event"     # 数据库备份参数
if [ removePrevious = y ]
then
    cd /backup
    rm -rf *.tar.gz
fi

###    Begin  Backup Script        ###
backupFile()
{
    
    Path=`echo $1 | sed 's#//*$##'`
    backupPath=${Path%/*}
    backupName=${Path##/*/}     
    if [ -d $Path ] ; then
        cd $backupPath
        tar czvf $tmpPath/$backupName.tar.gz $backupName > /dev/null 2>&1
    fi

    if [ -f $Path ] ; then
        tar czvf $tmpPath/$backupName.tar.gz  $Path > /dev/null 2>&1
    fi       
    
}


backMysql()
{
    cd $tmpPath
    
    mysqldump -u$mysqlUser -p$mysqlPassword $argv> sql.bak     
}
##    backup file or dir     ###
oldIFS=$IFS 
IFS=:
for file in $backupSrc
do
    backupFile $file
done
IFS=$oldIFS
##    backup file end        ###


##   backup myql             ###
if [ $mysqlFlag = y ] 
then
    backMysql
fi
##   backup myql             ###

##   create backupfile begin    ###
cd /backup
tar czvf $DATENAME.tar.gz $tmpPath/* > /dev/null 2>&1
rm -rf $tmpPath

##   create backupfile end    ###
if [ $useFTP = y ] 
then
    echo "$DATENAME.tar.gz $ftpServer"
    curl -T $DATENAME.tar.gz $ftpServer 
fi 

原创文章,作者:Zhang Miao Miao,如若转载,请注明出处:https://www.yidc.net/archives/8718