专题推荐
专题推荐

Linux vps备份教程之定时发送备份文件到指定qq或163邮箱

2020-01-31 18:33 分类:VPS教程 阅读(次阅读) 标签:

本教程主要是示范Linux vps每日自动打包压缩并发送到你的指定qq或163邮箱.
目前本人写出来后使用没有问题,不是网上直接复制粘贴,请放心使用,大概需要半个小时操作,然后就不用担心数据丢失了.

建议: 我觉得用于学习更好,可以学会SHELL以及很多知识,其实amh的后台一键自动备份方便得多.
我纯粹是过年无聊写了本教程.

本人总结了更好的Linux VPS备份方案:  Linux VPS每日异地备份网站数据与数据库上传到异地ftp空间

前言: 因为阿里云等国内几个大的云服务器商家屏蔽了邮件发送端口.
如果要通过每天自动发邮件的方式备份你的Linux vps网站数据到163邮箱或者QQ邮箱的话.
需要采用smtp服务.

这里给大家示范下,通过qq邮箱的smtp服务每天给163邮箱发送你的Linux vps备份数据.
当然你也可以用smtp服务 通过你的QQ邮箱A给你的QQ邮箱B发邮件.

一.Linux vps备份数据教程之安装mail模块

1.1 你需要先给你的服务器安装mail模块,需要执行这条命令来安装邮件模块:
mail模块相当于给你的linux安装了一个邮件客户端,类似foxmail的意思.
我用的是Centos,输入下面的代码安装.
root@name:~# yum install mailutils

1.2然后打开mail配置文件

vim /etc/mail.rc

1.3在结尾部分加上这些设置

set from=666888@qq.com #666888@qq.com代表你要使用的邮箱地址,你得自己修改
set smtp=smtps://smtp.qq.com:465 #使用qq.com的465加密端口
set smtp-auth-user=666888@qq.com #666888@qq.com你登录邮箱使用的账号,需要修改
set smtp-auth-password=sjrherfgxuwsrbgfi #qq邮箱开启POP3/SMTP服务时提供的密码
set smtp-auth=login #用户名和密码登录
set ssl-verify=ignore #使用ssl加密
set nss-config-dir=/etc/pki/nssdb/ #指定ssl证书所在的位置

1.4在vim的状态下,按esc键退出编辑模式 再按:w 保存,然后输入:q 退出.

1.5然后测试邮件是否发送成功:

echo 这里是内容 | mail -s "向阳测试邮件" xysemies@163.com

解释:这里是内容 是邮件内容,”向阳测试邮件”,xysemies@163.com表示你要发送到这个邮箱地址。成功收到邮件,就表示没问题。

二、Linux vps备份数据教程之备份Mysql数据库测试

2.1 本地测试mysql数据库能否备份

可能会遇到下面2个问题,因为我遇到了.

问题1:  我输入:

mysqldump -uwpyi_com_user -pbd9UbdEaAKrdhsfR wpyi_com > "/home/beifen/wpyi.sql"

弹出提示:

mysqldump :command not found

需要注意的是:
-u后面紧跟着的是数据库的用户名.
-p后面紧跟着的是数据库的密码 空格后面是 数据库名称.
后面的””的里面是你想要把数据库备份文件保存在本地哪里.

解决办法:
找到mysqldump:
find / -name mysqldump –通过名称查找文件
我查到的地址在:/usr/local/mysql-generic-5.5/bin/mysqldump
然后通过ln命令为mysqldump在/usr/bin创建一个软链接

ln -fs /usr/local/mysql-generic-5.5/bin/mysqldump /usr/bin

关于本问题的详细解答请点击: mysqldump :command not found

问题2: 我输入:

mysqldump -uwpyi_com_user -pbd9UbdEaAKrdhsfR wpyi_com > "/home/beifen/wpyi.sql"

弹出提示

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect

路径错误的解决办法:
通过 netstat -ln | grep mysql 命令查找得出准确路径

[root@wpyi bin]# netstat -ln | grep mysql
unix 2 [ ACC ] STREAM LISTENING 28837 /tmp/mysql-generic-5.5.sock

于是修改为

mysqldump --socket=//tmp/mysql-generic-5.5.sock -uwpyi_com_user -hlocalhost -pbd9UberEaAKhsfR wpyi_com > "/home/beifen/wpyi.sql"

需要注意的是:
-u后面紧跟着的是数据库的用户名.
-p后面紧跟着的是数据库的密码 空格后面是 数据库名称.
后面的””的里面是你想要把数据库备份文件保存在本地哪里.

关于本问题的详细解答请点击: Linux vps备份数据库提示mysqldump: Got error: 2002: Can’t connect to local MySQL server through socket
执行以上命令,进入/home/beifen/wpyi.sql 备份文件是否存在,存在就OK了,注意 -p数据库密码之间没有空格。

三、Linux vps备份数据教程之编写脚本和定时任务

建立一个备份脚本,并使用定时任务每天执行它。
这样就不用担心数据丢失了跑路了,也不会晚上做噩梦了.

在某个目录建立一个SHELL脚本,为了简单说明我直接建在/beifen_mysql.sh,内容如下

vim /back_mysql.sh
#!/bin/bash
#备份导出数据库文件并发送邮件

#根据日期命名备份文件
filename=`date +%Y-%m-%d`"-bak.sql"
path="/home/beifen/"$filename
#执行备份
/tmp/mysql-generic-5.5.sock -uwpyi_com_user -hlocalhost -pbd9UberEaAKhsfR wpyi_com > $path
#发送邮件
echo "数据库备份文件" | mail -s $filename -a $path xysemies@163.com
#删除临时文件
rm -f $path

本地测试SHELL脚本能否正常运行.

/bin/sh /home/beifen/back_mysql.sh

根据你自己的目录来

四、使用crontab建立定时任务,每天的0时1分执行

crontab -e
0 1 * * * /bin/sh /back_mysql.sh

五、我看到网上也有zip压缩并加密后发送的.

命令如下:

#!/bin/bash
#Send the WEB of backup file to email
#zip文件名
filename=`date +%Y-%m-%d`"-blog-bak.zip"
#zip文件路径
path="/home/beifen/"$filename
#sql备份文件路径
mysqlpath="/home/beifen/blog.sql"
#附件备份路径
uploadpath="你要备份的附件地址"
/usr/bin/mysqldump -u数据库帐号 -p数据库密码 数据库名 > $mysqlpath
#创建附件备份(这是我网站的附件位置)
cp -r "/www/uploads/" "/tmp/"
#加密打包,>/dev/null 2>&1表示信息重定向,方便调试时不输出加密信息,你也可以省略
/usr/bin/zip -P 加密密码 -r $path $mysqlpath $uploadpath >/dev/null 2>&1
echo "邮件内容" | mail -s $filename -a $path 邮箱

#删除备份文件
rm -f $path $mysqlpath
rm -rf $uploadpath

总结: 老实说我个人觉得这个办法过于繁琐麻烦,这个是国内云服务器商家封禁25端口后的不得已的办法.

稍后我会写一篇 每日自动备份到异地ftp的办法,非常的简单OK.


本文地址: https://www.vpsyi.com/linux-vps-back-qqmail.html