备份整个网站数据

备份网站数据,程序和数据库都备份需要知道,数据库地址账号密码,ftp的信息

#!/bin/bash

#这是一个简单的网站数据备份脚本
#包括sql,文件备份
#服务器端需要安装mysql,ftp软件
#备份端需要安装mysql,lftp,tar

#1.定义数据库连接、目标库信息
DB_USER="dbuser"
DB_PASS="dbpass"
DB_HOST="127.0.0.1"
DB_NAME="123456"

#2.FTP信息定义
FTP_HOST="127.0.0.1"  
FTP_USER="FTP_USER"  
FTP_PASS="FTP_PASS"  
FTP_PORT="21"  
#远程文件夹地址
FTP_PATH="/www"


 
#3.定义备份目录、时间、文件名主体
#定义文件名称前面部分
BF_TIME="$(date +%Y%m%d)"
NAME_1="$DB_NAME-$BF_TIME"

#mysql软件位置
DB_BASHSHELL="/usr/local/mysql/bin/mysqldump"
#lftp软件位置
FTP_BASHSHELL="/usr/bin/lftp"
#打包软件位置
TAR="/bin/tar"

#本地备份存放文件夹地址
BAK_DIR="/home/www/bakyqs/"
#备份在本地保留天数
days=3

cd  $BAK_DIR

if [ ! -d $BF_TIME ] ;then
  mkdir $BF_TIME
fi

#4.mysql先导出.sql脚本
cd  $BF_TIME
echo "backup_SQL job start"
$DB_BASHSHELL -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME > $NAME_1.sql
echo "backup_SQL job done"  

#5.用lftp连接上服务器同步备份
echo "Starting to sftp"
lftp <<EOF
open ftp://$FTP_USER:$FTP_PASS@$FTP_HOST
mirror $FTP_PATH $BF_TIME
EOF
echo "success"


#6打包文件夹,删除源文件
cd  $BAK_DIR
$TAR zcf $BF_TIME.tar.gz $BF_TIME 
rm -rf $BF_TIME
#删除规定天数前的备份数据
find $BAK_DIR -name "*.gz" -type f -mtime +$days -exec rm {} \;
#添加进计划任务
#vi /etc/crontab
#30 02 * * * /home/www/bak.sh
#/etc/init.d/crontab stop
#/etc/init.d/crontab start 
#screen -S bak
#screen -r bak
#screen -ls

给自己留下,防止忘了,最好自己测试的时候在screen -S  bak 下,执行会好很多,有效防止断线

你可能感兴趣的:(lftp,全站备份)