Linux VPS挂载Google Drive和Dropbox-实现VPS主机数据同步备份
现在随便购买一个VPS主机的硬盘容量基本上可以达到几十个GB以上了,但是对于一些大容量需求的朋友来说,可能又觉得不够用,同时为了备份数据,我们又不得不多出一个备用硬盘来。总之,花钱购买硬盘又觉得浪费,不花钱的话又感觉束缚“手脚”。
本文要分享的google-drive-ocamlfuse小工具,它可以让在Linux VPS主机上挂载Google Drive云盘。免费的Google Drive一般都是15GB,当然也有一些人通过各种方法获取到1TB的Google Drive,这样你的VPS主机再也不用担心硬盘容量了。
如果想挂载Dropbox的话,目前只能通过第三方的WebDav的方式来进行了。当然,如果你只是想要将数据同步备份到Dropbox,那么可以直接使用Linux备份脚本了,Dropbox提供了API,你可以实现定时上传和删除网盘中的数据文件。
更多的关于VPS主机建站和使用教程,你还可以看看:
- 三大免费工具助你检测VPS服务器真伪-VPS主机性能和速度测试方法
- Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
- 一个使用了阿里云VPS主机三年的站长总结出阿里云的五大特点
PS:2017年11月28日更新,更多的Linux挂载网盘的工具还有:VPS挂载国内外网盘实现免费扩容工具:Rclone,COS-Fuse和OSSFS。
PS:2017年9月12日更新,服务器之间相互拷贝复制文件数据,可以最为快捷方便的远程拷贝方法,充分利用机房带宽优势,见:三个命令工具Rsync,SCP,Tar-快速解决VPS远程网站搬家与数据同步。
一、挂载Google Drive方法
google-drive-ocamlfuse主页:https://github.com/astrada/google-drive-ocamlfuse,安装命令如下:
sudo add-apt-repository ppa:alessandro-strada/ppa
#如果出现错误:add-apt-repository: command not found,请使用以下命令解决
apt-get install software-properties-common
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse
如何使用?你先需要进入到Google Drive获取一个API:https://console.developers.google.com/apis/api/drive.googleapis.com/,类型就选择“其他”。
接着输入以下命令绑定Google Drive的API。
google-drive-ocamlfuse
#如何出现错误:/bin/sh: xdg-open: command not found,请使用以下命令解决
sudo apt-get install xdg-utils --fix-missing
google-drive-ocamlfuse -headless -label googledrive -id 此处填写你的ID -secret 此处填写你的密钥
回车后,你会得到一串URL地址,复制粘贴到你的浏览器中打开,你会得到一个验证码。
进入到路径:/root/.gdfuse/googledrive,打开config配置文件,填入你刚刚得到了验证码,保存该文件。
绑定Google Drive。使用以下命令绑定谷歌网盘:(/www/backup是挂载的路径,googledrive是标签,必须和上面创建的配置文件路径同名)
google-drive-ocamlfuse -label googledrive /www/backup
#出现错误:fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
使用以下命令:
google-drive-ocamlfuse -label googledrive /www/backup -o nonempty
最后打开VPS,你就可以看到Google Drive已经成功挂载到你的VPS主机上了。
往你挂载了Google Drive的路径中写入文件,你就可以在Google Drive中看到同步过来的数据了,同时在Google Drive中删除文件的话VPS主机也会删除此文件,双方会保持双向同步。
二、挂载Dropbox网盘
挂载Dropbox网盘并不像Google Drive那好使,目前最好的还是使用第三方的同步备份脚本,将文件数据上传到Dropbox中。
2.1 CloudFusion
这也是一个第三方的脚本工具:https://github.com/joe42/CloudFusion,支持挂载Dropbox、Google Drive、Amazon S3、WebDAV等,不过该工具已经好久没有更新了,我在测试时遇到了不少的问题。
CloudFusion安装命令如下:
sudo apt-get install git
git clone git://github.com/joe42/CloudFusion.git
#如果是Ubuntu:
sudo apt-get install python-setuptools gcc libssl-dev libffi-dev python-dev fuse-utils opencv-dev libhighgui2.4 libcvaux2.4 sikuli-ide python-pycurl python-libxml2 python-imaging tesseract-ocr
# Finally install CloudFusion
cd CloudFusion
sudo python setup.py install
#如果是Debian:
sudo apt-get install python-setuptools gcc libssl-dev libffi-dev python-dev fuse-utils libopencv-dev libhighgui-dev libcvaux-dev sikuli-ide python-pycurl python-libxml2 python-imaging tesseract-ocr
cd CloudFusion
sudo python setup.py install
# Add yourself to the group fuse
sudo usermod -a -G fuse "$USER"
# add the group for the current shell session (or restart your computer so it works in every shell)
newgrp fuse
# allow users in the fuse group access to fuse filesystems
sudo chgrp fuse /dev/fuse
sudo chmod g+wr /dev/fuse
挂载方法是:复制配置文件:cloudfusion/cloudfusion/config/Dropbox.ini 到你的根目录下. 然后按照配置中的说明填入你的Dropbox用户名与密码。最后输入以下命令挂载Dropbox网盘:
cloudfusion --config ~/db.ini mnt
#注意db.ini 就是你刚刚修改后的配置文件,名字自定义,你也可以写成:Dropbox.ini。挂载的数据路径是在:mnt/data.
cloudfusion ~/mnt stop
#卸载
2.2 Dropbox Uploader
这是一个第三方的脚本,主页地址:https://github.com/andreafabrizi/Dropbox-Uploader,安装命令如下:
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
或者:curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
chmod +x dropbox_uploader.sh
./dropbox_uploader.sh
执行上面命令后,会自动在~/.dropbox_uploader新建一个配置文件,同时也会出现提示,要你到Dropbox获取一个新的API并填入进去,最后完成配置。
获取Dropbox API的方法是进入到开发者页面:https://www.dropbox.com/developers/apps,然后新建一个APP,类型为APP Folder,找到Access token就是上文中dropbox_uploader配置要的。
如何使用?常用的几个命令如下:
./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old
./dropbox_uploader.sh upload *.zip /
./dropbox_uploader.sh download /backup.zip
./dropbox_uploader.sh delete /backup.zip
./dropbox_uploader.sh mkdir /myDir/
./dropbox_uploader.sh upload "My File.txt" "My File 2.txt"
./dropbox_uploader.sh share "My File.txt"
./dropbox_uploader.sh list
参数说明如下:
upload [LOCAL_FILE] <REMOTE_FILE>
上传一个本地文件到远程的Dropbox文件夹下。如果文件大于150MB则使用默认4MB的块上传,在这种情况下,会以Verbose模式显示每个块的上传情况。相反,上传如果发生错误,则显示*号并且重试三次。只有当文件小于150MB时,才会使用标准API上传。Verbose模式默认设定为1,在上传过程中则显示进度。download [REMOTE_FILE] <LOCAL_FILE>
从Dropbox下载到本地文件夹中。delete [REMOTE_FILE/REMOTE_DIRECTORY]
从Dropbox删除文件或目录。mkdir [REMOTE_DIRECTORY]
在Dropbox上新建一个目录。list <REMOTE_DIRECTORY>
列出Dropbox的目录下的内容详情。share [REMOTE_FILE]
分享Dropbox的一个文件,生成一个URL链接。info
显示关于你的Dropbox的一些账户信息。unlink
解除与你的Dropbox账户关联。可选参数:
-f [FILENAME]
指定加载一个配置文件。
2.3 定时备份Dropbox
使用Dropbox Uploader这个脚本,其实只是一个同步的脚本,所以我们需要定时任务,让VPS主机自动打包备份网站文件与数据库上传到Dropbox,同时自动检测本地备份文件和远程备份文件,如果超过了我们设定的时间就自动删除,避免浪费。
首先创建定时备份Dropbox脚本:vi backup.sh,然后将以下内容复制粘贴保存,注意检查一下路径,你自己也可以根据相关的参数进行调整:
#!/bin/bash
DROPBOX_DIR="/backup/$(date +%Y-%m-%d)" #Dropbox上的备份目录
MYSQL_USER="root" #数据库帐号
MYSQL_PASS="123456" #数据库密码
YM_DATA=/usr/local/nginx/conf #nginx配置目录
BACK_DATA=/home/backup #本地备份文件存放目录,手动创建
DATA=/home/wwwroot #网站数据存放目录
#定义数据库的名字和旧数据库的名字
DataBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
YMName=YM_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -6day +"%Y%m%d").tar.gz
OldWeb=Web_$(date -d -6day +"%Y%m%d").tar.gz
OldYM=YM_$(date -d -6day +"%Y%m%d").tar.gz
#定义Dropbox旧数据的名字(30天前)
Old_DROPBOX_DIR=/backup/$(date -d -30day +%Y-%m-%d) #Dropbox上的备份目录
#删除本地6天前的数据
rm -rf $BACK_DATA/$OldData $BACK_DATA/$OldWeb $BACK_DATA/$OldYM
cd $BACK_DATA
#使用命令导出SQL数据库,并且按数据库分个压缩
for db in `mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
(mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
done
#压缩数据库文件合并为一个压缩文件
tar zcf $BACK_DATA/$DataBakName $BACK_DATA/*.sql.gz
rm -rf $BACK_DATA/*.sql.gz
#压缩网站数据
cd $DATA
tar zcf $BACK_DATA/$WebBakName ./*
#压缩域名配置数据
cd $YM_DATA
tar zcf $BACK_DATA/$YMName ./*
cd ~
#开始上传
./dropbox_uploader.sh upload $BACK_DATA/$DataBakName $DROPBOX_DIR/$DataBakName
./dropbox_uploader.sh upload $BACK_DATA/$WebBakName $DROPBOX_DIR/$WebBakName
./dropbox_uploader.sh upload $BACK_DATA/$YMName $DROPBOX_DIR/$YMName
#开始删除远程30天前的文件
./dropbox_uploader.sh delete $Old_DROPBOX_DIR/
echo -e "Thank you! all down"
接下来就是将以上脚本添加到定时任务,并设置每天定时运行即可,如下命令:
#添加可执行权限:
chmod +x backup.sh
#设置定时任务
crontab -e
#在最后加入
00 03 * * * /root/backup.sh
表示每天凌晨三点执行备份脚本。
#最后重启Crontab
service cron restart
#如果你不知道服务器当前时间,可以使用下面的命令查看当前时间:
date -R
#修改服务器时区为上海:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
三、快速下载国外网盘文件
Google Drive的文件如果量非常大的话,下载到国内那是一件相当困难的事情。解决的办法就是利用七牛等免费的存储服务中转,这样就可以以最快的速度下载Google Drive中的文件了。
首先,确保你已经将你的VPS主机与你的Google Drive、Dropbox实现的同步了,然后下载qshell:https://github.com/qiniu/qshell,根据你的操作系统下载对应的版本,然后重命名为qshell。
如何使用qshell?太复杂的命令也不需要掌握,知道如何登录账号、上传文件等几个命令就行了。
#登录
qshell account ak密钥 sk密钥
#新建配置文件:
vim /root/wzfou.conf
最简单的配置文件说明如下:
{
"src_dir" : "本地同步路径",
"bucket" : "同步数据的目标空间名称"
}
#上传
./qshell qupload 10 /root/wzfou.conf
关于qupload完整的参数还有:
{
"src_dir" : "",
"bucket" : "",
"file_list" : "",
"key_prefix" : "",
"up_host" : "",
"ignore_dir" : false,
"overwrite" : false,
"check_exists" : false,
"check_hash" : false,
"check_size" : false,
"rescan_local" : true,
"skip_file_prefixes" : "test,demo,",
"skip_path_prefixes" : "hello/,temp/",
"skip_fixed_strings" : ".svn,.git",
"skip_suffixes" : ".DS_Store,.exe",
"log_file" : "upload.log",
"log_level" : "info",
"log_rotate" : 1,
"log_stdout" : false,
"file_type" : 0
}
相关的说明如下:
src_dir 本地同步路径,为全路径格式,工具将同步该目录下面所有的文件;在Windows系统下面使用的时候,注意src_dir的设置遵循D:\\jemy\\backup这种方式。也就是路径里面的\要有两个(\\)
bucket 同步数据的目标空间名称,可以为公开空间或私有空间
file_list 待同步文件列表,该文件列表内容必须是相对于src_dir的文件相对路径列表,可以不指定,工具将自动获取src_dir下面的文件列表。请使用 dircache 命令生成这个文件列表,生成之后可以手动删除不需要的行
up_host 上传域名,可选设置,一般情况下不需要指定
ignore_dir 保存文件在七牛空间时,使用的文件名是否忽略本地路径,默认为false
key_prefix 在保存文件在七牛空间时,使用的文件名的前缀,默认为空字符串
overwrite 是否覆盖空间中已有的同名文件,默认不覆盖。
check_exists 每个文件上传之前是否检查空间中是否存在同名文件,默认为false,不检查
check_hash 在check_exists设置为true的情况下生效,是否检查本地文件hash和空间文件hash一致,默认不检查,节约同步时间
check_size 在check_exists设置为true的情况下,如果check_hash为false,那么你可以设置check_size为true做简单的大小检查,以查看本地文件和空间文件大小是否一致,默认不检查
skip_file_prefixes 跳过所有文件名(不带相对路径)以该前缀列表里面字符串为前缀的文件
skip_path_prefixes 跳过所有文件路径(相对路径)以该前缀列表里面字符串为前缀的文件
skip_fixed_strings 跳过所有文件路径(相对路径)中包含该字符串列表中字符串的文件
skip_suffixes 跳过所有以该后缀列表里面字符串为后缀的文件或者目录
rescan_local 默认情况下,本地新增的文件不会被同步,需要手动设置为true才会去检测新增文件。
log_level 上传日志输出级别,可选值为debug,info,warn,error,默认info
log_file 上传日志的输出文件,如果不指定会输出到qshell工作目录下默认的文件中,文件名可以在终端输出看到
log_rotate 上传日志文件的切换周期,单位为天,默认为1天即切换到新的上传日志文件
log_stdout 上传日志是否同时输出一份到标准终端,默认为false,主要在调试上传功能时可以指定为true
file_type 文件存储类型,默认为0(标准存储) 1为低频存储
delete_on_success 上传成功的文件,同时删除本地文件,以达到节约磁盘的目的,比如日志归档的场景,默认为false,如果需要开启功能,设置为true即可。
四、总结
Google Drive挂载比较简单,现在还有一个GDrive的同步脚本有兴趣的朋友可以试试,它类似于一个同步脚本。google-drive-ocamlfuse实际是扩大的本地硬盘容量,把云盘挂载在本地使用了,适合同步与存储文件。
以前一个dropdav.com提供免费的Dropbox云盘webdav服务,可惜已经改成收费的了。Dropbox使用同步备份不适合国内的VPS,因为速度太慢了。Google Drive挂载后,如果是国外的VPS基本上感觉不出来延迟。
文章出自:挖站否 https://wzfou.com/linux-vps-drive/,部分内容参考自:guodong.me 、teddysun.com 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
- VPS主机一键备份脚本backup.sh-自动备份到OneDrive/Dropbox等各大网盘
- Linux VPS主机自动备份网站和数据库脚本通用版-自动备份谷歌网盘,阿里云OSS等
- Linux VPS挂载Google Drive和Dropbox-实现VPS主机数据同步备份
- 一个命令让Linux定时打包备份指定目录文件夹并同步备份到各大网盘
猜你喜欢
-
-
不知道可不可以挂载用來BT?
2018年3月2日 23:49 -
#-drive-ocamlfuse挂载的东西怎么卸载
2018年3月1日 21:32 -
感谢楼主教程。# drive 挂载到了阿里云VPS了,但是现在通过FTP不能登录到# drive,登录上,但是目录列不出来,暂时无解。。
2017年12月22日 21:52 -
用rclone会更简单一些 我改了别人的code增加了备份gogs的repository的功能https://www.genius2k.com/2017/09/02/backup-vps/
2017年10月16日 22:41 -
请教一下,我想每天定时备份站点数据(遭到删库,出错的时候不备份,保证备份的数据的完整性与安全性),这样可以用什么实现呢?
2017年10月14日 14:41 -
gdrive的教育版大容量,可以充分利用率
2017年9月10日 07:47 -
目前我使用 UpdraftPlus(WP 插件) + # Drive 每周自动备份,此外 Hawk Host 也免费提供 R1Soft SBM 每日自动备份,双重保障哈哈。
2017年9月5日 19:35 -
有挂载onedrive的教程吗
2017年9月3日 13:05 -
放弃 VPS 了(手贱总喜欢折腾),刚入了一个月的 Hawkhost 试用,付钱后等了半个小时就开通了,打开 cPanel 后非常惊喜——我需要的 Let’s Encrypt、Memcached、PHP 7.1 一个没缺,功能上很满意,真不是国内的主机商能比的。等下就把我的 WP 博客搬上去。
2017年9月1日 20:33 -
受教了,正在找相关的服务。感谢.
2017年8月27日 18:01 -
那我的无限盘这么玩,
2017年8月27日 07:21 -
我用gdrivefs挂载gdrive,上传dropbox也是用的Dropbox Uploader
2017年8月25日 20:24 -
阿里云 CDN 480G流量包仅需0.9元,每月返20GB,2年返完 @qi
2017年8月25日 20:01 -
dropbox被q的厉害,不敢用
2017年8月25日 15:35-
能保证数据安全就可以了。其他的哪用 care。备好一只纸飞#机,灰的还是粉的随便你,就没问题了。
2017年9月1日 20:51
-
-
网#信#办发布10月起 未实#名认证用户再无跟#帖评论服务,对博客评论有影响吗?
2017年8月25日 14:34 -
用davfs2也可以挂载支持webdav的网盘,比如dropbox等:https://www.xiaoz.me/archives/8429
2017年8月25日 08:45 -
vultr免费送了五十个zhei的路过
2017年8月25日 07:46-
免费的50G只有特定机房才能用吧?
2017年8月25日 16:03
-
-
国内最大的问题就是这两个被*了。。。oneinstack有远程备份到VPS或者免费50G的腾讯COS也不错。LNMP的军哥也写过一个FTP备份脚本,改改就能用。
2017年8月24日 22:01 -
这辈子学不会了
2017年8月24日 21:39 -
😀 这个好!
2017年8月24日 21:18 -
推荐博主看下rclone,也很好用! 🙂 🙂
https://liyuans.com/archives/rclone.html2017年8月24日 21:16
#-drive-ocamlfuse挂载成功以后隔一段时间(一两天或几小时)就会出现Transport endpoint is not connected的提示,总要卸载再挂载才行,但这也不是长久之计。是不是因为我直接往挂载目录下载文件的原因?