昨天一激动,就写了个自动删除、压缩 Apache 日志的脚本。今天更激动,就写了个利用七牛云存储备份网站的脚本。其实都是简单的不能再简单的了,哎~~
七牛云存储对待标准用户(通过身份认证即可)提供 10G 存储空间、10G 下载流量、10 万 Put、100 万 Get,一般应用是够了~ 如果看官你是高校在校学生,那么还可以申请 " 青葱计划 ",之后更是有一年期 1000 元七牛抵用券,想用完都没门了!
零。适用条件
凡是用 LAMP、LNMP 建站的都可以~ 其实,只要数据库是 MySQL 就可以。因为在脚本里使用了 mysqldump,其他数据库可能要换成别的命令。
一。为啥要备份呢
一般博客,咱不太可能天天备份,没必要而且还占用空间。咱就采取七天为一个周期、以日期作为备份文件名的周期性备份。要是话唠还可以改成三天、两天一备份,这都是后面一个数字的问题。
备份的意义有多重要就不说了,那些不懂得备份的人都是在丢了数据之后从自杀边缘走回来才懂得此条真理的~
为了防止 VPS 服务商宕机、或者跑路、或者某天自己折腾完蛋了恰巧没做快照甚至是 VPS 提供商不提供快照功能,做备份是十分必须的。七牛和你的 VPS 同时挂了那就去买个彩票吧,做啥博客站呀~
而且,我常常说,“懒人创造了世界”。你看卡尔 · 本茨那家伙不就偷懒不爱走路吗发明了汽车,你看莱特兄弟不就是嫌弃汽车啥的太慢就发明了飞机吗。我不就是嫌弃手工打包、下载、上传费事吗,就写了个这么个小脚本。
二。准备工作
1. 七牛云存储账号一个
建议新建一个私有空间,仅在恢复数据的时候再切换到公开空间免得泄露网站文件。
2. 整理好 MySQL 的账号密码。一般来说 VPS 上用户名就是 root,密码我不知道哟
3. 想明白要备份的网站目录在哪里
三。Here we go
假设网站目录在 /home/wwwroot,phpmyadmin 在 /home/wwwroot/phpmyadmin/
在 / home 下创建一个 wwwbackup 作为备份文件夹, qiniu 作为七牛同步工具文件夹。
- mkdir /home/wwwbackup
- mkdir /home/qiniu
切换到 qiniu 目录,下载七牛 Linux 同步工具。
本着不留垃圾的原则我就 rm 了下。32 位 64 位不通用,请自行切换
本次以 32 位为例说明。(64 位下载点这 )
- cd /home/qiniu/
- wget http://devtools.qiniu.com/qiniu-devtools-linux_386-current.tar.gz
- tar xvf qiniu-devtools-linux_386-current.tar.gz
- rm -f qiniu-devtools-linux_386-current.tar.gz
建立配置文件(在 /home/qiniu/ 下)
- nano conf.json
输入如下内容保存:其中 accesskey、secret key 和 bucket 请自行去 https://portal.qiniu.com/setting/key 获取并替换。
- {
- "src": "/home/wwwbackup",
- "dest": "qiniu:access_key=2delala不给看啦啦啦alalalLdfz&secret_key=UtqLN啦啦啦啦啦不给看fB3cuo4z9-qmcmOwAq8YFO3PKnvClJfTOHM&bucket=blog-backup",
- "debug_level": 1
- }
给 qrsync 增加可执行权限。
- chmod +x qrsync
切换到上层目录, 创建备份脚本。
- cd ..
- nano backup.sh
内容如下:
- #!/bin/sh
- rm /home/wwwroot/default/phpmyadmin/save/*
- mysqldump -u root -p ohyeah --password=123456789 > /home/wwwroot/default/phpmyadmin/save/`date +%Y%m%d`.sql
- tar -jcpf /home/wwwbackup/`date +%Y%m%d`.tar.bz2 /home/wwwroot >/dev/null 2>&1
- /home/qiniu/qrsync /home/qiniu/conf.json
Ctrl + X 退出保存。
考虑到某些小伙伴可能喜欢有个备份日志,那就用 echo 重定向下好啦~~
如果手里还有另一台 VPS,那么也可以顺手给上传到另一台 VPS 上,命令如下(注意第一次连接需要手动打 yes)
scp -i 私钥 /home/wwwbackup/`date +%Y%m%d`.tar.bz2 用户名 @公网 IP:/home/blog-backup
参数说明:
mysqldump:其中 -p 后面 ohyeah 为要备份的数据库名字,-u 为用户名,一般来说就是 root,--password= 为密码。/home/wwwroot/default/phpmyadmin/save/ 为导出数据库备份文件的存储路径。
考虑到随着时间的增长,某个数据库的冗余备份也越来越多,所以采取了先清空原来已有备份、再重新到处对应数据库的方法。
tar:打包网站目录。后面的 >/dev/null 2>&1 意思是我要把输出丢到黑洞里~~
如果要给压缩包加密码,那么就用
- cd /home/wwwbackup/
- tar -jcpf /home/wwwroot |openssl des3 -salt -k secretpassword | dd of=`date +%Y%m%d`.des3
解包用
- dd if=test.des3 |openssl des3 -d -k secretpassword|tarzxf -
请注意 test.des3 为压缩包名字,secretpassword 为密码
这是我的目录结构,不要嘲笑我怎么没加 vhost 用了个丑丑的 default,
四。测试
- sh /home/backup.sh
本终端没反应就对了。因为我把 tar 的输出都丢到黑洞里了,只有 qrsync 的输出暂时给我们测试用。另开一个 ssh 看 top 和 nethogs 即可知道运行状态。
博主俺又忘记截图了。
五。添加 cron
- crontab –e
最后一行添加如下内容:
- 0 0 */7 * * sh /home/backup.sh
如果想 10 天一次,就把 7 改成 10 即可。将会在每隔七天 0 时 0 分(考虑到此时大家都在睡觉,降低服务器负载)压缩网站目录、上传到七牛云。
重启 cron
- service cron restart
本次任务成功完成。
来看看上传时的动态
nethogs 忘记截图了哈哈哈。平均速度在 1M~2.5M 的样子,我的服务器在日本东京。这个速度很棒的了,看看 Node Query 的记录吧!
六。后话
童鞋们记得灵活的变换目录哦,这是作为 Geeker 最基本的素质了~
另外,假如七牛标准用户还觉得不够用,还不想付钱,那么也可以试试更财大气粗的 " 阿里百川顽兔 ",100G 的存储空间、100G 月流量总是够玩了吧!
初次入门阿里百川不知道怎么弄配置文件?见此篇博文:《阿里百川图形化上传工具 taesync》
非常不幸的是阿里百川提供的上传工具是用 Java 开发的,博主俺比较懒,就不测试了。
大体方法都是一样的….. 就是事先写好配置文件,然后修改下执行路径。剩下都是一样一样的了~~
最后问大家一个问题
- //想一个人该怎么办?
- #想一个人该怎么办?
- --想一个人该怎么办?
- /*想一个人该怎么办?*/
- <!--想一个人该怎么办?-->
- '想一个人该怎么办?