• 前言
    服务器、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...请原谅博主英语比较差,大部分都是机翻过来的,懒得校正了!
    20171229224346.jpg

  • 自动备份
    配合系统crontab定时计划任务实现每天自动备份
    命令:crontab -e
    添加定时计划内容:**00 00 * * * /BackupToFtp.sh** (其中00 00为时间,格式:分/小时,可自行修改,例如:30 23,就是每天23.30运行这个脚本,/BackupToFtp.sh为脚本文件存放路径)

  • 结束语
    结束语就是,没有结束语!希望能帮到有需要的人吧!就是这样!