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

作者:袖梨 2022-11-14

例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*

相关文章

精彩推荐