使用webdav备份网站数据

截止今日,懒人博客写了半年,发表了138篇文章。

以前随便写写的时候没觉得什么,现在一旦坚持下去,就认识到数据的重要。

在我们行业有句老话:备份不做,万劫不复。

备份是一定要做的,尤其是博客跑在一个VPS上面。我之前已经采取了两种备份方式。

一种方式是在VPS提供商的管理面板里,定期对系统生成快照。下次从快照可以启动一个全新的系统,环境跟当前系统的一模一样。不过,生成快照依赖手工操作,我一个星期难得上去操作一次。

第二种方式,在之前的博客里写过,使用Yandex Disk每日自动备份网站数据。当然,要先写个脚本,把网站数据导出来,打包,再放到Yandex Disk的目录里,它会自动上传到云端进行备份。不过这个Disk免费的只有10G,我没有去扩容,定期删一删备份文件就好。

我还想增加第三种备份方式,一旦发表新文章,后台就触发一个命令,自动备份到远程。怎么监控新文章这个很容易,读数据库就好。触发的自动备份,也要先写好脚本,把网站数据导出,然后上传到远程服务器。

远程服务器有多种选择,可以是ssh的,通过scp拷过去;也可以是rsync的,通过rsync命令同步过去;还可以是ftp的,古老传统的方式。

网上搜了一圈,满足上述需求的靠谱的免费资源肯定很少,于是我就买了mydrive.ch的服务,它带了webdav协议。

这是一个普通的同步网盘,功能很简单,上传是阻塞的。不像dropbox、google drive这种专业云盘,会在本地映射一个文件系统,文件是异步和差量上传的。

而且服务死贵,现在圣诞节有活动,10G的存储,2年接近400元RMB。对比起来iCloud Drive,50G存储,两年才144元,苹果真是良心啊。

不过,谁叫iCloud没有webdav呢,我只好购买mydrive了。这家公司位于瑞士,号称数据隐私绝对有保障,就相信一回吧。

购买后,得到一个空间,以及webdav服务。接下来就是如何在linux上,把网站的备份文件,用命令行上传到webdav了。

我研究了多个命令行工具,最后发现curl就好使,其他那些乱七八糟的命令,根本运行不了。curl神器,真是重剑无锋啊。

show me the code,完整的命令是:

 curl -T website.xx-xx-xx.tgz -u user:passwd https://webdav.mydrive.ch/backup-dir/blog.tgz 

上述命令的参数说明一下:

  • -T:就是upload file,后面的website.xx-xx-xx.tgz是网站的打包文件
  • -u:用户名和密码,在mydrive.ch注册得到
  • 最后一串是文件的上传路径,注意协议是https的,主机名是webdav.mydrive.ch,backup-dir是事先创建好的备份目录,blog.tgz是目标文件名

执行这个命令,就把网站的打包文件,通过webdav协议,上传到网盘进行备份了。

题外话,我在win系统下载了两个webdav客户端,一个是NetDrive 3,一个是RaiDrive,配置它们访问mydrive。结果发现这俩货完全用不了,前者导致本机网络崩溃,丢包100%;后者连接后,初始化不了,本地盘无法mount起来。我的操作系统是Windows 7,64位。

如果在windows里通过客户端访问mydrive,那么用它的原生客户端就好,官网有下载,不要用第三方的了。

最后,懒人的网站通过一番折腾,又加了一层自动备份。一旦有新文章发表,后台就通过webdav协议,把网站打包上传到云端进行备份,高枕无忧了。

Print this entry