linux 备份数据库与网站文件详解

作者:简简单单 2013-10-21

例1,手动备份数据库与网站文件

 代码如下 复制代码

#!/bin/sh
# 文 件 名: rptsmain.sh
# 版    权: Copyright (shell) 2007-2007 
# 版 本 号: V1.0
# 功能描述:  数据备份
# 创 建 人: xxxxx
# 日    期: 2007/10/26
# 修 改 人:xxxxxxx
# 日    期: 2007/10/26

#程序开始

TODAY=`date "+%Y%m%d"`
WORKDATE=$TODAY
BACKDIR='/databak/'

tput init
clear
while :
do
tput clear

echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo ""
echo "
                                   数据备份程序 V1.0
           
                                   Copyright (shell) 
    
  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  ┃                                                      ┃
  ┃                 1.     开始备份数据                  ┃
  ┃                                                      ┃
  ┃                 2.     备份数据写入磁带              ┃
  ┃                                                      ┃
  ┃             ----------------------------------       ┃
  ┃                                                      ┃
  ┃                 0.     退出系统                      ┃
  ┃                                                      ┃
  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
 
                            请选择[  ] "

read choice
 case $choice in
  1):
   clear
  
   echo "开始BCP数据库数据..."
   DATABASEDIR=$BACKDIR/database
   if [ -d $DATABASEDIR ]; then
    rm -rf $DATABASEDIR/*
   else   
    mkdir $DATABASEDIR
   fi
  
   #备份webdb数据库
   mkdir $DATABASEDIR/webdb
   total=`cat webdb.table|wc -l`   
   current=0                   
   for table in `cat webdb.table`
    do 
     current=$current+1 
     /sybase/OCS-12_5/bin/bcp webdb..$table out

$DATABASEDIR/aadb/$table.bcp -Usa -Ppwd -SServer -Jiso_1 -n -T409600
    done
   
   #备份abcdb数据库
   mkdir $DATABASEDIR/abcdb
   total=`cat abcdb.table|wc -l`   
   current=0                   
   for table in `cat abcdb.table`
    do 
     current=$current+1 
     /sybase/OCS-12_5/bin/bcp abcdb..$table out

$DATABASEDIR/bbdb/$table.bcp -Usa -Ppwd -SServer -Jiso_1 -n -T409600
    done
  
   echo "开始打包压缩数据库备份数据..."
   cd $BACKDIR
   tar uvf database-$WORKDATE.tar database/*
  
   echo "正在删除临时文件..."
   rm -rf $DATABASEDIR
  
  
  
   echo "开始打包压缩数据文件..."  
   echo "(1)开始打包Tomcat-ABC网站数据文件..."
   SOuRCEDIR='/aaaa/uploads'
   cd $BACKDIR
   #tar czf abc-files-$WORKDATE.tar.gz $SOuRCEDIR/ISO/*
  
   echo "(2)开始打包Websphere经管网数据文件..."
   cd $BACKDIR
   #tar czf web-files-$WORKDATE.tar.gz /upload/images/807/*
  
   echo "数据备份完成,按任意键返回..."
   cd $HOME
   read return
   ;;
  2):
   ;;
  0):
   break
   ;;
  esac
  done

例2,自动定时备份数据库

 代码如下 复制代码

#!/bin/bash 
#Setting 
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 
#默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第
#18行,则默认以tag的方式备份
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz 
DBName=mysql
DBUser=root
DBPasswd=123456
BackupPath=/home/wang/www/backup/mysql/mysqlbackup
LogFile=/home/wang/www/backup/mysql/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End

NewFile="$BackupPath"db$(date +%y%m%d).tgz 
DumpFile="$BackupPath"db$(date +%y%m%d) 
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz 
echo "-------------------------------------------" >> $LogFile 
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile 
echo "--------------------------" >> $LogFile 
#Delete Old File
if [ -f $OldFile ] 
then 
   rm -f $OldFile >> $LogFile 2>&1 
   echo "[$OldFile]Delete Old File Success!" >> $LogFile 
else 
   echo "[$OldFile]No Old Backup File!" >> $LogFile 
fi 
if [ -f $NewFile ] 
then 
   echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile 
else 
   case $BackupMethod in 
   mysqldump*)
      if [ -z $DBPasswd ]
      then 
         mysqldump -u $DBUser --opt $DBName > $DumpFile 
      else 
         mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile 
      fi 
      tar czvf $NewFile $DumpFile >> $LogFile 2>&1 
      echo "[$NewFile]Backup Success!" >> $LogFile 
      rm -rf $DumpFile 
      ;; 
   mysqlhotcopy*) 
      rm -rf $DumpFile 
      mkdir $DumpFile 
      if [ -z $DBPasswd ] 
      then 
         mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1 
      else 
         mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1 
      fi 
      tar czvf $NewFile $DumpFile >> $LogFile 2>&1 
      echo "[$NewFile]Backup Success!" >> $LogFile 
      rm -rf $DumpFile 
      ;; 
   *) 
      /etc/init.d/mysqld stop >/dev/null 2>&1 
      tar czvf $NewFile $DBPath >> $LogFile 2>&1 
      /etc/init.d/mysqld start >/dev/null 2>&1 
      echo "[$NewFile]Backup Success!" >> $LogFile 
      ;; 
   esac
fi
echo "-------------------------------------------"
echo


#lftp -f lftp.sh 如果有FTP可同时上传ftp中。

 再利用crontab命令生成/var/spool/cron/root 文件
 

crontab –e   (就会打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令)

 m h  dom mon dow   command  (具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command))


如: 10 02 * * * /home/backup/autobackupmysql.sh  (表示零晨二点十分执行备份脚本)


例3,我们自己的一个Linux VPS 自动备份数据到远程主机FTP

如果系统上没有ftp命令,先执行yum install -y ftp进行安装。
需要先建立/home/backup/目录,该目录不能用作其他用途。

 代码如下 复制代码

#!/bin/bash

#FTP信息
FTP_IP=
FTP_USER=
FTP_PASS=

#备份数据库
/etc/init.d/mysqld stop
MySQLBakName=MySQL_$(date +”%Y%m%d”).tar.gz
tar zcf /home/backup/$MySQLBakName /var/lib/mysql
/etc/init.d/mysqld start

#备份网站
WebBakName=Web_$(date +%Y%m%d).tar
tar cf /home/backup/$WebBakName /home/www

#操作FTP
OldMySQL=MySQL_$(date -d -1day +”%Y%m%d”).tar.gz
OldWeb=Web_$(date -d -1day +”%Y%m%d”).tar

cd /home/backup/
/usr/bin/ftp -v -n $FTP_IP << EOF
user $FTP_USER $FTP_PASS
type binary
put $MySQLBakName
put $WebBakName
delete $OldMySQL
delete $OldWeb
bye
EOF

rm -rf /home/backup/*.tar*

相关文章

精彩推荐