不管做什么, 备份都是非常必要, 重要的. 备份是以防万一, 大多时候都用不着这些备份的东西, 很多人备份了一段时间后就有了麻痹的意识, 开始停止备份, 往往在这个时候, 服务器, 硬盘一旦出问题或误删除, 哭都没地方哭去.
数据可以备份到本地本机, 这样可以抵御误操作, 误删除带来的数据丢失, 但如何使硬盘出现问题, 本机备份就不行了. 最安全的备份方式是异地备份, 也就是备份到另外一台机器上. 这需要有两台服务器, 每天晚上执行备份工作. 两天机器还可以相互备份.
大多数网站站长只有一台服务器, 甚至只有一个虚拟主机. 这种情况下, 如果想异地备份, 只能备份到自己家里的台式电脑里或笔记本里. 手工备份很麻烦, 而自动备份 -- 家用电脑不可能一年到头凌晨备份不关机, 既费电又损坏技巧. 如果你换个角度想一想, 其实每个人家里都有好几台一年到头 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 个月, 手工做一次全量备份, 清零手机里增量文件, 不占用手机的存储空间. 下面的脚本是在网站服务器上找出每天新增的图片文件, 生成一个文件清单:
上面的脚本会每天生成一个 image-list.txt 文件, 里面存储着前一天新增的图片文件的 http 路径. 我们将会在手机里的 Linux 服务器里部署另一个脚本, 抓取这个文件, 并以此将文件里列举的图片抓取到本地, 并按原始目录存放.
- #!/bin/bash
- DATE=`date --date="1 days ago" +"%Y/%m"`
- images_path=/mobile-backup-dir/uploads/${DATE}
- wget http://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, 空间是有的.
自从有了智能手机, 很多以前不可能的事情都可以了, 比如滴滴打车, 共享单车, 不带钱购物等, 今天说的把手机当成服务器执行备份任务也是. 对于程序员来说, 在智能手机上能干的事情还有很多, 需要慢慢发掘.
来源: http://www.webhek.com/post/backup-your-website-data-to-your-android-phone.html