前言
服务器、vps,难免会遇到各种问题,丢失数据,则必然痛心疾首啊!!!
数据无价,so建议养成定期备份的习惯!而且,要多备份几份,本地、网盘、FTP空间等,都多保存几份!
这里,就为大家带来一个linux下,利用lftp作为上传方式的shell脚本,配合系统crontab定时计划任务实现每天自动备份网站数据,并上传到FTP空间!
备份脚本
脚本内容如下:
#!/bin/bash
#建议使用root账户登录执行本脚本
#赋予脚本执行权限 chmod +x BackupToFtp.sh
#修改相关账户和路径配置
#开始
MYSQL_USER=root #mysql用户名
MYSQL_PASS=123456 #mysql密码
FTP_USER=ftpuser #ftp用户名
FTP_PASS=123456 #ftp密码
FTP_IP=123.123.123.123 #ftp地址
FTP_backup=backup #ftp上存放备份文件的目录,请提前自己在ftp空间上创建
WEB_DATA=/home/www #要备份的网站数据目录
MYSQL_PATH=/usr/local/mysql #MYSQL安装路径
DBNAME=dbname #要备份的数据库名称
LOCALbackup_path=/home/backup #本地备份文件存放路径
#结束
#安装FTP LFTP命令工具
echo "#---------------------------------------------------------------------#"
echo "正在ftp lftp客户端工具...."
echo "默认适用CentOS,Debian等系统请先修改本脚本相应位置命令"
echo "若已经安装,请忽略即可"
echo "installing Ftp Lftp...."
echo "#---------------------------------------------------------------------#"
yum install -y ftp lftp
#apt-get install-y ftp lftp
#设置数据库备份文件的名字和旧数据库备份文件的名字(旧:默认为5天前的)
DataBakName=Data_$(date +"%Y%m%d").tar.gz
OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
#设置网站数据备份文件的名字和旧网站数据备份文件的名字(旧:默认为5天前的)
WebBakName=Web_$(date +%Y%m%d).tar.gz
OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz
#删除本地5天前的备份数据
echo "#---------------------------------------------------------------------#"
echo "自动删除本地5天前的备份数据文件...."
echo "Auto delete local backup data files 5 days ago...."
rm -rf $LOCALbackup_path/Data_$(date -d -5day +"%Y%m%d").tar.gz $LOCALbackup_path/Web_$(date -d -5day +"%Y%m%d").tar.gz
cd $LOCALbackup_path
#导出需要备份的数据库为数据库SQL格式
echo "#---------------------------------------------------------------------#"
echo "正在导出需要备份的 $DBNAME 数据库sql备份文件...."
echo "Exporting you set database:$DBNAME to SQL file...."
$MYSQL_PATH/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS $DBNAME > $LOCALbackup_path/$DBNAME.sql
#压缩数据库文件并删除sql文件
echo "正在压缩打包数据库sql备份文件...."
echo "Tar the Database SQL file to tar.gz And delete SQL file...."
tar zvcf $LOCALbackup_path/$DataBakName $LOCALbackup_path/.sql
rm -rf $LOCALbackup_path/.sql
#压缩网站数据
echo "#---------------------------------------------------------------------#"
echo "正在压缩打包网站程序文件...."
echo "Tar the WebData file to tar.gz...."
#tar zvcf $LOCALbackup_path/$WebBakName $WEB_DATA
cd $WEB_DATA
tar zvcf $LOCALbackup_path/$WebBakName *
#上传到FTP空间
echo "#---------------------------------------------------------------------#"
echo "数据打包完成,开始登录FTP空间...."
echo "Start to login to FTP...."
#先进入备份文件路径
cd $LOCALbackup_path
#默认方式:镜像同步,与下面的单个方式任选其一
#------------------------------------------------------------------
lftp -u $FTP_USER,$FTP_PASS -e "mirror -R --only-newer $LOCALbackup_path $FTP_backup" $FTP_IP << EOF
bye
EOF
#------------------------------------------------------------------
#单个文件上传方式,请取消横线内的注释符#并注释掉前面的默认方式
#------------------------------------------------------------------
#lftp -u $FTP_USER,$FTP_PASS $FTP_IP << EOF
#lftp << EOF
#open ftp://$FTP_USER:$FTP_PASS@$FTP_IP
#cd $FTP_backup
#echo "正在上传数据库备份文件...."
#echo "Uploading Database file...."
#put $DataBakName
#echo "正在上传网站程序备份文件...."
#echo "Uploading WebData file...."
#put $WebBakName
#bye
#EOF
#------------------------------------------------------------------
echo "#---------------------------------------------------------------------#"
echo "上传所有备份文件完成..."
echo "Upload all backup files complete..."
echo "请登录FTP空间查看!"
echo "Please login to the FTP check!"
echo "#---------------------------------------------------------------------#"
脚本内容结束
emmm...请原谅博主英语比较差,大部分都是机翻过来的,懒得校正了!
自动备份
配合系统crontab定时计划任务实现每天自动备份
命令:crontab -e
添加定时计划内容:**00 00 * * * /BackupToFtp.sh**
(其中00 00为时间,格式:分/小时,可自行修改,例如:30 23,就是每天23.30运行这个脚本,/BackupToFtp.sh为脚本文件存放路径)
结束语
结束语就是,没有结束语!希望能帮到有需要的人吧!就是这样!