前两天为了解决博客的备份问题,伤透了脑筋。用rsync是方便,但是需要一台独立的Linux的主机来实现备份。对于数据量不大的网站来说,上传到网盘最方便了。服务器在墙外,墙内的网盘肯定就不考虑了。wordpress的插件可以实现备份到dropbox,奈何dropbox免费账户容量太小,而且国内已经被墙,哪天要导出数据,手里没个翻墙工具还真会要命。
于是乎就找到了来自新西兰的神器mega网盘,这网盘免费账户的容量都有50G,而且是端到端加密,只要密码足够强壮,连服务端都不会知道你上传了个啥。最主要的是,mega在目前国内并没有被GFW照顾,虽然网页打开可能稍慢,但是数据传输还是能跑到50-100kB/s,满足个简单备份需求够用。
但是mega官方的Linux客户端只支持桌面环境,一般服务器上面是不会启用桌面环境的。于是乎,通过一番努力,找到了megatools(官网)这组实用的小工具。
Megatools是捷克程序员Ondřej Jirman开发的一组命令行工具,开源免费,可以在win或者linux平台上面方便地通过命令行存取mega网盘,完全不依赖任何图形界面。而且这工具还支持streaming方式快速预览mega网盘上面的音视频文件,不过这些功能在服务器环境下都没啥卵用了。
坑爹的是,megatools在centos下面是没有预编译版本的,需要自己动手编译,由于centos的yum源里面部分依赖库版本有问题,折腾了一晚上,绕了很多弯路,现在把编译的过程共分享出来。
1.安装编译所需的依赖库
yum -y install gcc make libcurl-devel openssl-devel gmp-devel tar libffi-devel gettext-devel
2.由于centos yum源里面的glib版本太老,不满足megatools的编译需求,我们需要手动编译安装2.32.4版本。glib的编译比较费时间,如果你的服务器cpu性能比较弱,请耐心等待。
mkdir glib-source cd glib-source/ wget http://ftp.gnome.org/pub/GNOME/sources/glib/2.32/glib-2.32.4.tar.xz xz -d glib-2.32.4.tar.xz tar -xvf glib-2.32.4.tar cd glib-2.32.4/ ./configure make make install
3.glib安装成功之后,我们就可以编译安装megatools了。
mkdir megatools-source cd megatools-source/ #当你看到这篇文章时,软件版本可能已经更新 #请访问官网找到最新版本的下载地址,替换下一行wget后面的链接 wget https://megatools.megous.com/builds/megatools-1.9.97.tar.gz tar -zxvf megatools-1.9.97.tar.gz #需要定义两个变量,否则执行./configure会报错 export LD_LIBRARY_PATH=/usr/local/lib export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig #开始编译安装 cd megatools-1.9.97/ ./configure make make check make install
4.找到你当前用户的主目录,root登录的话就是/root。在主目录下建立一个文件名为“.megarc”(不含引号)的文件,用来保存登陆mega的账号密码。当然如果你不喜欢这种保存方式,你也可以在每次执行命令的时候手动指定相应的参数。
cd vi .megarc [Login] Username = jjj@www.mm Password = xxxxx :wq!
5.执行megals,如果程序返回了你mega网盘下当前的目录结构,恭喜你,安装成功。
6.具体使用方法可以参考官方manual。这里列出一个简略的参考。
Tools ===== megareg Register and verify a new mega account megadf Show your cloud storage space usage/quota megals List all remote files megamkdir Create remote directory megarm Remove remote file or directory megaput Upload individual files megaget Download individual files megadl Download file from a "public" Mega link (doesn't require login) megastream Streaming download of a file (can be used to preview videos or music) megacopy Upload or download a directory tree megafs Mount remote filesystem locally. megadf [--free|--total|--used] [--mb|--gb|-h] megals [-e] [-h] [--header] [-l] [-R] [-n] [<remotepaths>…] megaput [--no-progress] [--path <remotepath>] <paths>… megamkdir <remotepaths>… megamkdir /Contacts/<contactemail> megaget [--no-progress] [--path <path>] <remotepaths>… megaget --path - <remotefile> megarm <remotepaths>… megarm /Contacts/<contactemail> megadl [--no-progress] [--path <path>] <links>… megadl --path - <filelink> megareg [--scripted] --register --email <email> --name <realname> --password <password> megareg [--scripted] --verify <state> <link> megafs [-o <options>…] [-d] [-f] <mountpoint>