2012-11-09
小记配置OpenShift 网站数据和Mysql 数据库到Dropbox的自动备份

由于在OpenShift 创建的 Application 有几个,对于自己来说,每个每天准时备份一次全部数据,确实有点吃力。如果一次都可以自动化,那就实在太好了。真的,后来看了看freehao123 博主的《OpenShift免费空间全自动定时备份网站数据和MysqL数据到Dropbox》(原文链接:http://www.freehao123.com/openshift-dropbox/),决定着手试试。下面记录下我在配置过程中遇到的一点小问题和自己的解决方法。 前面配置Dropbox 基本是很顺利的,没有什么大问题,freehao123 博主的教程很详细,按部就班很容易就成功了。主要是配置使用Dropbox uploader执行OpenShift空间自动备份bak_openshift_to_dropbox.sh的配置有点小出入,可能是因为OpenShift 最近做了小调整的原因吧。附上脚本下载地址,再次感谢 freehao123 博主。

1、下载:http://www.zhujis.com/myvps/bak\_openshift\_to\_dropbox.sh 2、备用:http://uploads.shuyz.com/2012/08/bak\_openshift\_to\_dropbox.tar.gz

懒得打字了,继续借用freehao123 博主原话:

7、你可以用上面两种方法将该备份脚本上传到OpenShift空间上,不过你还需要打开bak_openshift_to_dropbox.sh。 8、主要是要设置你的应用名称、数据库地址、端口、用户名、密码等,请注意下面的划红线的地方。 9、完成上面的设置后保存,执行以下命令,给脚本加上可执行权限和执行首次自动备份。

chmod +x bak_openshift_to_dropbox.sh
./bak_openshift_to_dropbox.sh

10、如果你能看到下图所示就表示你的配置正确,备份没有问题了。 11、回到你的Dropbox就可以看到刚刚备份过来的打包文件了,里面有数据文件和数据库文件。你现在可以直接下载到本地作再次备份了。

好!问题来了。首先是bak_openshift_to_dropbox.sh 里面的appname,OpenShift 可能是近几天才改的吧,我们的~/目录下不再是我们创建应用的名字了,OpenShift 已经用”app-root”取而代之了,也就是appname这里必须更改为”app-root”而不是你应用的名字,当然你也可以直接更改${appname}的为”app-root”,不过肯定不够上面的方面吧。简而言之,设置appname=app-root就对了。 完全正确设置了自己的参数后,执行:

./bak_openshift_to_dropbox.sh

出现错误:

bash: ./bak_openshift_to_dropbox.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录

这错误是因为不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。 解决方法: 解决:1)在windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File–>Conversions–>DOS->UNIX即可。 如果是 Notepad++ 则是在: 编辑 -> EOL Conversion -> 转换为 UNIX 格式 中。 2)也可在Linux中转换: 首先要确保文件有可执行权限

chmod a+x bak_openshift_to_dropbox.sh

然后修改文件格式

vi bak_openshift_to_dropbox.sh

利用如下命令查看文件格式

:set ff 或 :set fileformat

可以看到如下信息

fileformat=dos 或 fileformat=unix

利用如下命令修改文件格式

:set ff=unix 或 :set fileformat=unix

:wq (存盘退出)

最后再执行文件

./bak_openshift_to_dropbox.sh

此时,终于看到进度条了,回到Dropbox,文件已经成功备份。 差不多就是这些小问题了,还有一点,~/app-root/ 目录下不具有写入权限,各位留意下bak_openshift_to_dropbox.sh 里面有关文件夹的创建,我是全部更改到新建的dropbox下的,也就是~/app-root/repo/dropbox/ 下面。文件夹需要手动创建,只需创建tmp和logs两个目录即可:

cd ~/app-root/repo/dropbox/
mkdir tmp logs

上面是我自己的目录路径,你也可以直接下载我的bak_openshift_to_dropbox.sh

Read More