如何用安卓手机备份你的网站数据
不管做什么,备份都是非常必要、重要的。备份是以防万一,大多时候都用不着这些备份的东西,很多人备份了一段时间后就有了麻痹的意识,开始停止备份,往往在这个时候,服务器、硬盘一旦出问题或误删除,哭都没地方哭去。
数据可以备份到本地本机,这样可以抵御误操作、误删除带来的数据丢失,但如何使硬盘出现问题,本机备份就不行了。最安全的备份方式是异地备份,也就是备份到另外一台机器上。这需要有两台服务器,每天晚上执行备份工作。两天机器还可以相互备份。
大多数网站站长只有一台服务器,甚至只有一个虚拟主机。这种情况下,如果想异地备份,只能备份到自己家里的台式电脑里或笔记本里。手工备份很麻烦,而自动备份——家用电脑不可能一年到头凌晨备份不关机,既费电又损坏技巧。如果你换个角度想一想,其实每个人家里都有好几台一年到头24小时不关机的服务器——你们的智能手机。一个小小的手机,如果你在里面装入了Linux系统,它就变成了一台强大的服务器。上一篇文章我介绍了如何在安卓手机里安装Linux系统,下面,我将介绍如何用手机备份你的网站数据。
(本文以Wordpress网站为例,其它网站可以参考)
一般的个人网站需要备份的数据主要是:1)程序,2)数据库,3)数据文件(图片)。首先,程序存方在github或bitbucket里,很安全,不需要备份。需要备份的就是数据库和图片文件等。
一般的个人网站数据库的数据量不会很大,几百兆的数据库文件导出压缩后不到50兆,之前我介绍过如何每日自动备份Mysql数据库的脚本,在手机里的linux服务器了部署另外一个shell脚本,每日拉取执行文件。
#!/bin/bash DBNAME=dbname DATE=`date +"%Y%m%d"` SQLFILE=ftp://your-host-ip/$DBNAME-${DATE}.sql.gz wget --ftp-user=usr --ftp-password=yourpassword --directory-prefix=/backup-dir $SQLFILE
上的这个脚本可以把你每天按日期备份的数据库文件拉取到本地。
剩下的就是备份图片。因为图片的数据很大,有可能好几个G的大小,所有我们必须采用增量备份,我们每天只备份当天新增的文件,隔一段时间,比如3个月,手工做一次全量备份,清零手机里增量文件,不占用手机的存储空间。下面的脚本是在网站服务器上找出每天新增的图片文件,生成一个文件清单:
#!/bin/bash FILEDIR=`date --date="1 days ago" +"%Y/%m"` find /server/public_html/wordpress/wp-content/uploads/$FILEDIR/* -mtime -1 -exec sh -c ' name={}; name=${name#*html};echo https://your-website.com/your-web-root/$name' \; > /backup-dir/image-list.txt
上面的脚本会每天生成一个image-list.txt文件,里面存储着前一天新增的图片文件的http路径。我们将会在手机里的linux服务器里部署另一个脚本,抓取这个文件,并以此将文件里列举的图片抓取到本地,并按原始目录存放。
#!/bin/bash DATE=`date --date="1 days ago" +"%Y/%m"` images_path=/mobile-backup-dir/uploads/${DATE} wget https://your-website.com/path/image-list.txt wget -i image-list.txt --directory-prefix=$images_path #wget -i $filename --directory-prefix=$images_path rm image-list.txt
上面的这些备份方案适合个人网站(数据量不是特别大),以Wordpress网站框架为例。如果是虚拟主机,可能没有权限在虚拟主机上放置定时cron执行脚本,可以使用PHP来生成相关的文件。服务器上的脚本和手机Linux里的脚本都是在凌晨执行,备份拉取前一天的数据,备份数据的脚本一定要拉取数据的脚本之前执行,时间顺序掌握好。实测只需要几分钟就能将30兆(压缩前150兆)加100张新图片拉取到手机里,现在的手机存储空间一般都有32G/64G,空间是有的。
自从有了智能手机,很多以前不可能的事情都可以了,比如滴滴打车,共享单车,不带钱购物等,今天说的把手机当成服务器执行备份任务也是。对于程序员来说,在智能手机上能干的事情还有很多,需要慢慢发掘。