首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >怎样利用 E-mail 对网站进行备份

怎样利用 E-mail 对网站进行备份

作者头像
爱技术的小黄鸭
发布2023-06-15 14:57:17
发布2023-06-15 14:57:17
5530
举报
文章被收录于专栏:IT小圈IT小圈

数据无价,且行且珍惜

你的每一个谨慎操作都有可能造成数据丢失甚至销毁 所以,及时备份很重要

所谓备份,就是将数据及时 copy 到其它地方进行存储,正所谓“鸡蛋不要放在一个篮子里”,数据存储也一样。

思路

  1. 每天定时进行对数据打包;
  2. 打包完成后发送电子邮件;
  3. 发送成功后将备份数据删除(主要考虑 空间容量问题);

数据打包备份,需要编写脚本,然后做定时任务

代码语言:javascript
复制
#!/usr/bin/bash

# mail 发送中文邮件会有乱码情况,特别是调用脚本的时候
# 加上这两行代码,可以有效解决 中文乱码问题
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

# 这是一个网站数据打包备份脚本
# 脚本中涉及到的目录请根据自己环境进行修改:如 PHP目录、Nginx目录、web目录等

dtime=$(date "+%Y")
# 准备需要备份的文件
function webBack(){
    # 备份 PHP 配置文件,如果不需要可忽略
    cp -r /usr/local/php/etc /usr/local/nginx/html/
    
    # 备份 Nginx 配置文件,如果不需要可忽略了
    cp -r /usr/local/nginx/conf /usr/local/nginx/html/

    # 备份数据库,这里假定 数据名称为 typecho
    mysqldump -u typecho -pAb123456 --databases typecho > /usr/local/nginx/html/webDB_$dtime.sql

    # 打包数据
    tar -czf /usr/local/nginx/webBack_$dtime.tar.gz -C /usr/local/nginx/html .
}

# 发送电子邮件,这里涉及代发邮件问题,需要配置相关的mail
function sendmail(){
    echo "$dtime: 网站数据备份" | mail -s "$dtime: 网站数据备份" -a /usr/local/nginx/webBack_$dtime.tar.gz [email protected]/* <![CDATA[ */!function(t,e,r,n,c,a,p,m,o){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-yjshash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-yjsemail')){for(e='',o=0,r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2){m=('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);if((a.length-n)<=6&&a.length>=128)o=(parseInt(m)<=191)?1:o*2;if(o>1)break;e+='%'+m;}p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */
}

# 开始打包备份、发送邮件、删除备份文件
webBack && sendmail && rm -rf /usr/local/nginx/webBack_$dtime.tar.gz
rm -rf /usr/local/nginx/html/webDB_$dtime.sql
rm -rf /usr/local/nginx/html/conf
rm -rf /usr/local/nginx/html/etc

mail 发送邮件配置

如果没有 mail 命里,请进行安装

代码语言:javascript
复制
# Redhat 系列
yum install -y mail

# Debian 系列
apt-get install mail   

配置mail vim /etc/mail.rc 增加如下代码

代码语言:javascript
复制
# 发件人地址
set [email protected]/* <![CDATA[ */!function(t,e,r,n,c,a,p,m,o){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-yjshash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-yjsemail')){for(e='',o=0,r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2){m=('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);if((a.length-n)<=6&&a.length>=128)o=(parseInt(m)<=191)?1:o*2;if(o>1)break;e+='%'+m;}p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */
# smtp 服务器,也就是邮件服务商
set smtp=smtp.126.com
# 邮件真实账号
set [email protected]/* <![CDATA[ */!function(t,e,r,n,c,a,p,m,o){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-yjshash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-yjsemail')){for(e='',o=0,r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2){m=('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);if((a.length-n)<=6&&a.length>=128)o=(parseInt(m)<=191)?1:o*2;if(o>1)break;e+='%'+m;}p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */
# 登陆密码,有些服务商会要求填写授权码
set smtp-auth-password=xxx
set smtp-auth=login

定时任务配置

代码语言:javascript
复制
[[email protected]/* <![CDATA[ */!function(t,e,r,n,c,a,p,m,o){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-yjshash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-yjsemail')){for(e='',o=0,r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2){m=('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);if((a.length-n)<=6&&a.length>=128)o=(parseInt(m)<=191)?1:o*2;if(o>1)break;e+='%'+m;}p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */ ~]# crontab -e

# 添加如下计划任务,脚本路径建议写绝对路径
# 每天 凌晨 3:00 执行一次脚本
0 3 * * * /usr/bin/bash /usr/local/nginx/web_back.sh
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据无价,且行且珍惜
  • 思路
  • 数据打包备份,需要编写脚本,然后做定时任务
  • mail 发送邮件配置
  • 定时任务配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档