``` #!/bin/bash #上海银行存管系统备份 # Edit by ZeroC # Date 2017/11/07 serverlist=("admin" "api" "bases" "capital" "contract" "fullscale" "orders" "others" "pc" "products" "repayment" "scan" "swoole" "sysaccount" "transaction" "trusteeship" "users") dir=/data/htdocs/v backupdate=`date +%Y-%m-%d` now=`date +%Y%m%d%H%M` weekago=`date -d 'a week ago' +%Y-%m-%d` backupdir=/data/backup/$backupdate packagedir=/data/backup/$weekago logdir=/data/logs/backup/$backupdate if [ ! -d $backupdate ];then mkdir -p $backupdir fi if [ ! -d $logdir ];then mkdir -p $logdir fi Backup() { server=`echo $1|tr '[:upper:]' '[:lower:]'` cd $dir if [ $server == 'all' ];then for name in ${serverlist[*]};do echo "Backup $name at $now ..." >> $logdir/$name if [ ! -d "$backupdir/$name" ];then /usr/bin/rsync -a $dir/$name/ $backupdir/$name >> $logdir/$name else /usr/bin/rsync -a $dir/$name/ $backupdir/$name-$now >> $logdir/$name fi echo -e "----------End----------\n" >> $logdir/$name cat $logdir/$name done else if [[ ${serverlist[@]} =~ $server ]];then echo "Backup $server at $now ..." >> $logdir/$server if [ ! -d "$backupdir/$server" ];then /usr/bin/rsync -a $dir/$server/ $backupdir/$server >> $logdir/$server else /usr/bin/rsync -a $dir/$server/ $backupdir/$server-$now >> $logdir/$server fi echo -e "----------End----------\n" >>$logdir/$server cat $logdir/$server else echo "Wrong ServerName!" fi fi } Package() { if [ -d $packagedir ];then cd /data/backup echo "-------------------" >> $logdir/package-$backupdate tar zcvf $weekago-$now.tar.gz $weekago --remove-files >> $logdir/package-$backupdate else echo "-------------------" >> $logdir/package-$backupdate echo "Not Backup at $backupdate or Package already !" >> $logdir/package-$backupdate fi } if [ $# -eq 0 ];then sc=$0 echo -e "\t\033[32;1m++++++++++server list++++++++++\033[0m" for i in ${serverlist[*]};do echo -e "\t\t\033[33;1m$i\033[0m" done echo -e "\t\t\033[33;1mall [以上所有]\033[0m" read -p "The server[default all]:" server : Backup $server Package elif [ $# -eq 1 ];then Backup $1 Package else echo -e "Stupid behavior !!" fi ```