本教程主要是示范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发邮件.
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表示你要发送到这个邮箱地址。成功收到邮件,就表示没问题。
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数据库密码之间没有空格。
建立一个备份脚本,并使用定时任务每天执行它。
这样就不用担心数据丢失了跑路了,也不会晚上做噩梦了.
在某个目录建立一个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 -e 0 1 * * * /bin/sh /back_mysql.sh
命令如下:
#!/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.