我们检测到您似乎禁用了 JavaScript
您可以启用JS或将本站加入白名单,以便能更好的体验 (如何启用 JS?)
Linux VPS每日自动备份到FTP及数据库通过邮箱发送方法 | SSRSHARE - 免费SSR, 免费SS, 免费Socks, 免费 V2Ray 节点分享社区

Linux VPS每日自动备份到FTP及数据库通过邮箱发送方法

本帖由 BigCat2020-05-13 发布。版面名称:技术交流

Tags标签:
  1. BigCat

    BigCat 管理成员 Telegram用户 教程编写者

    注册:
    2020-05-12
    帖子:
    87
    获赞:
    0
    概括:此文介绍一种,每天自动备份网站以及数据库文件,发送EMAIL到邮箱,自动删除旧备份的方法。


    提示
    1、如果不需要使用邮件功能的可以跳过邮件组建安装步骤,需要的请看2。
    2、很多VPS商家会封闭邮件25端口,记得保持开启!发送邮件的大小和接收也与VPS商和接收的邮箱有关,数据库超过限制会发送失败。
    3、FTP别使用要备份网站所在的VPS,不然就没多大意义了。


    获得自动备份脚本
    1、安装邮件发送依赖组件
    代码:
    #CentOS
    yum install sendmail
    yum install mailx
    #Debian/Ubuntu
    apt-get install sendmail
    apt-get install mailx
    
    2、获得备份脚本
    代码:
    wget https://mirrors.uiop.cf/bash/backup/backup.sh
    
    脚本编辑
    1、创建备份文件夹
    代码:
    cd /home
    mkdir back
    
    2、修改backup.sh相关信息
    将脚本下载到本地修改好再上传或者直接通过WinSCP改都可以。
    代码:
    #!/bin/bash
    # 进入到备份文件夹
    cd /home/back
    #压缩网站数据
    tar zcvf web_$(date +"%Y%m%d").tar.gz 网站目录
    # 导出数据库到备份文件夹内
    mysqldump -uroot -p数据库密码 数据库名称 > web_data_$(date +"%Y%m%d").sql
    # 以附件形式发送数据库到指定邮箱
    echo "Blog date"|mail -s "Backup$(date +%Y-%m-%d)" -a web_data_$(date +"%Y%m%d").sql xxx@xx.com 收件人邮箱
    # 删除本地3天前的数据
    rm -rf web_$(date -d -3day +"%Y%m%d").tar.gz web_data_$(date -d -3day +"%Y%m%d").sql
    # 登录FTP
    lftp ftp地址 -u ftp用户名,ftp密码 << EOF
    # 进入FTP根目录
    cd ftp根目录文件夹
    # 删除3天前备份文件
    mrm web_$(date -d -3day +"%Y%m%d").tar.gz
    mrm web_data_$(date -d -3day +"%Y%m%d").sql
    # 上传当天备份文件
    mput web_$(date +"%Y%m%d").tar.gz
    mput web_data_$(date -d -3day +"%Y%m%d").sql
    bye
    EOF
    
    按脚本要求编辑网站路径,数据库密码,名称,FTP和邮箱即可。

    3、测试备份是否正常
    代码:
    sh /root/backup.sh
    
    测试过程中请不要关闭SSH,直到执行完毕,若没有问题,则继续。


    定时执行,每日备份
    1、赋予文件执行权限(755)
    代码:
    chmod +x /root/backup.sh
    
    2、设定自动任务
    代码:
    crontab -e
    
    SSH执行以上命令。

    3、添加任务
    代码:
    00 00 * * * /root/backup.sh
    
    按键盘字符:“i”,回车另起一行,添加以上代码,路径和时间请根据实际情况修改。
    其中00 00为时间分/小时,可自行修改,例如:30 00 *,就是每天凌晨0:30运行这个脚本。
     
    最后编辑: 2020-05-13

分享此页面