网盘存储

VPS挂载国内外网盘实现免费扩容工具:Rclone,COS-Fuse和OSSFS

上一篇文章Linux VPS挂载Google Drive和Dropbox分享了google-drive-ocamlfuse和CloudFusion,这是老外开发的用来帮助Linux VPS主机挂载谷歌网盘和Dropbox网盘的命令工具。好友Leonn向我推荐了Rclone,这是一个支持挂载多数国外网盘的工具。

目前Rclone支持挂载的网盘有:Google Drive、 Dropbox 、Google Cloud Storage 、Microsoft One Drive 、Hubic、 Backblaze B2 、Yandex Disk 、Openstack Swift / Rackspace cloud files / Memset Memstore 。更强大的是,Rclone还支持SFTP 、FTP 、HTTP挂载。

Rclone支持挂载的网盘基本上都是国外的,如果有国内的VPS想要使用的话,可以用用SFTP 、FTP 、HTTP方式来挂载,将不同的服务器存储整合到一起。如果有腾讯云和阿里云的用户,可以试试COS-Fuse和OSSFS这两款专门用于腾讯云COS和阿里云OSS存储挂载工具。

如果你想利用VPS搭建自己的私有云存储,你可以试试Nextcloud,这是一个优秀开源的网盘工具,同时Lsyncd可以帮助你建立一个服务器实时同步镜像,确保服务器数据安全。相关的文章参考如下:

  1. Nextcloud个人云存储绝佳选择:一键自动安装方法和云盘使用体验
  2. Lsyncd搭建同步镜像-用Lsyncd实现本地和远程服务器之间实时同步
  3. Huginn在Debian/Ubuntu手动安装教程-抓取全文RSS和微信公众号开源软件

PS:更新记录.

1、结合Rclone,我们可以实现给VPS主机自动备份,方法:Linux VPS主机自动备份网站和数据库脚本通用版-自动备份谷歌网盘,阿里云OSS等。2021.4.12

2、Linux除了用挂载的方式实现扩容,我们还可以用共享存储目录的方式实现不同的服务器之间数据同步传输:Linux共享文件夹目录三种方法-NFS远程挂载,GlusterFS共享存储和samba共享目录。2017.12.19

一、Rclone安装与使用

Rclone官网:

  1. https://rclone.org/
  2. https://github.com/ncw/rclone

Rclone安装比较简单,基本的操作如下(新手朋友直接使用一键安装包命令):

curl https://rclone.org/install.sh | sudo bash

以下为手动安装命令,下载安装包:

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64

复制 binary file:

sudo cp rclone /usr/bin/
sudo chown root:root /usr/bin/rclone
sudo chmod 755 /usr/bin/rclone

安装 manpage:

sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb 

Rclone配置。执行 rclone config 开始配置Rclone,这里以配置Google Drive为例,首先是选择新建配置,然后选择Google Drive。(点击放大)

接着,问你要不要自动配置,选择:否。这时会得到一个URL地址。

复制这个URL地址到自己的电脑浏览器中打开,Google Drive会提示是否确认授权。

得到一个验证码后,再返回到Rclone配置页面,输入验证码回车,这时还会问你要不要设置为Team Drive,自己用的话直接选择否。最后见到如下图就表示Rclone挂载网盘成功了。

二、Rclone同步与挂载

首先,让我们来熟悉一下Rclone常用的命令:

rclone config – 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy – 将文件从源复制到目的地址,跳过已复制完成的。
rclone mount-挂载
rclone sync – 将源数据同步到目的地址,只更新目的地址的数据。
rclone move – 将源数据移动到目的地址。
rclone delete – 删除指定路径下的文件内容。
rclone purge – 清空指定路径下所有文件数据。
rclone mkdir – 创建一个新目录。
rclone rmdir – 删除空目录。
rclone check – 检查源和目的地址数据是否匹配。
rclone ls – 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd – 列出指定路径下所有的目录/容器/桶。
rclone lsl – 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone md5sum – 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum – 为指定路径下的所有文件产生一个sha1sum文件。
rclone size – 获取指定路径下,文件内容的总大小。
rclone version – 查看当前版本。
rclone cleanup – 清空remote。
rclone dedupe – 交互式查找重复文件,进行删除/重命名操作。

Rclone复制文件代码示例:rclone copy /root/5tv.zip wzfou:wzfou.com,此命令会将本地/root/5tv.zip 复制到网盘(wzfou—这是我刚刚配置Rclone时新建的配置名称)目录名为wzfou.com下。执行命令后,我就可以在网盘中看到文件了。

Rclone同步文件代码示例:rclone sync /root/luyou wzfou:wzfou.com,此命令与上方的复制文件差不多,只不过同步命令会对照本地文件与目标文件的异同,发现新增的就会同步过去,从而保持数据的一致性。效果如下:

特别注意:如果原网盘中的目录中已经有了文件,如果使用同步命令的话会清空原网盘目录中的文件,所以你最好是使用一个空的目录来作为目标文件夹。

Rclone挂载网盘。命令示例:rclone mount wzfou:wzfoumm /root/wzfougg --allow-non-empty,此命令会把本地目录/root/wzfougg ,挂载到网盘(wzfou配置文件名)目录wzfoumm 下。如果你的目标目录中有文件,可以使用参数:--allow-non-empty,但是注意它会清空原目录中的文件。

Rclone挂载网盘成功后,你在网盘和本地对文件的删除、新增等都会保持双方同步更新。

利用Screen让Rclone在后台运行。使用rclone mount 命令后,如果不守护进程的话,会话结束后rclone mount 进程就会终止。我们可以用Screen来让Rclone保持在后台运行。在执行Rclone挂载命令前,选择执行:Screen –S wzfou,挂载完成后再用快捷键CTRL-a d 来暂时断开当前会话。最后用screen -r <screen_pid>重新连接上。

申请Google API解决Rate Limit Exceeded问题。在设置Rclone时,如果你不添加API的话,默认的使用的是Rclone的API,但是这有一个问题如果用户太多的话会出现如下错误:

ERROR : loading-speed.png: WriteFileHandle.New Put failed: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded
ERROR : loading-speed.png: WriteFileHandle.Flush error: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded
ERROR : maxresdefault.jpg: WriteFileHandle.New Put failed: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded
ERROR : maxresdefault.jpg: WriteFileHandle.Flush error: googleapi: Error 403: Rate Limit Exceeded, rateLimitExceeded

解决的办法就是添加自己的API,方法参考之前的:挂载Google Drive方法。如下图:

三、COS-Fuse挂载腾讯COS

如果你正好有腾讯云主机和腾讯COS,那么就可以使用COS-Fuse工具将COS挂载到腾讯云服务器,操作方法如下:

安装依赖库。请先运行下面的命令安装所需要的依赖库:

sudo yum -y install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel

编译安装

#下载COS-Fuse
wget https://mc.qcloudimg.com/static/archive/144302cd3e6afb2bf2758a8c0c1d9bb9/cosfs-v4.2.1-master.zip
#解压
tar -zxvf cosfs-v4.2.1-master.zip
#更名
mv cosfs-v4.2.1-master cosfs
#编译安装
cd cosfs
./autogen.sh
./configure
make
sudo make install

配置运行。在腾讯云后台 – 云产品 – 存储与CDN – 对象存储服务,创建一个bucket,记录好bucket名称和所在区域;在对象存储服务 – 密钥管理,记录您的APPID、SecretId、SecretKey密钥;然后输入下面的命令将bucket、SecretId、SecretKey保存到/etc/passwd-cosfs文件中

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs

挂载COS。输入下面的命令将COS挂载到服务器,my-appid:对应APPID,my-bucket:就是bucket名称,my-mount-point:需要挂载的目录,比如/home/cosfs 。-ourl:是http://cn-south.myqcloud.com 。cn-south 对应华南广州地域 cn-north 对应华北天津地域 cn-east 对应华东上海地域。请根据bucket所在区域进行修改。

#创建挂载目录
mkdir -p /home/cosfs
#进行挂载
cosfs my-appid:my-bucket my-mount-point -ourl=my-cos-endpoint

演示代码

echo my-bucket:faint:123 > /etc/passwd-cosfs
chmod 640 /etc/passwd-cosfs
mkdir -p /home/cosfs
cosfs appid:my-bucket mkdir -p /home/cosfs -ourl=http://cn-south.myqcloud.com

效果:使用df -h查看是否挂载成功。

四、OSSFS挂载阿里云OSS

OSSFS好像也是阿里云自己开发的挂载OSS的工具,可以将OSS挂载到阿里云ECS服务器上,操作方法如下:

安装。S*S*H连接到服务器,分别执行下面的命令:

wget https://github.com/aliyun/ossfs/releases/download/v1.79.9/ossfs_1.79.9_centos6.5_x86_64.rpm
sudo yum localinstall ossfs_1.79.9_centos6.5_x86_64.rpm

运行与示例。设置bucket name, access key/id信息,将其存放在/etc/passwd-ossfs 文件中, 注意这个文件的权限必须正确设置,建议设为640。

echo my-bucket:my-access-key-id:my-access-key-secret > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs

将oss bucket mount到指定目录

ossfs my-bucket my-mount-point -ourl=my-oss-endpoint

示例:下面是将华东 1 (杭州)bucket名字为xiaoz,AccessKeyId是faint, AccessKeySecret是123,oss endpoint是http://oss-cn-hangzhou-internal.aliyuncs.com(内网)挂载到/home/ossfs目录。Endpoint对照表请访问:OSS开通Region和Endpoint对照表查看。

echo xiaoz:faint:123 > /etc/passwd-ossfs
chmod 640 /etc/passwd-ossfs
mkdir /home/ossfs
ossfs xiaoz /home/ossfs -ourl=http://oss-cn-hangzhou-internal.aliyuncs.com

五、总结

得益于阿里云OSS和腾讯COS内网流量免费的策略,大家如果有大流量的需求可以采用内网挂载的方式来避免高额的费用。如果是用外网访问阿里云OSS和腾讯COS,要小心流量费用的问题,一不小心可能就超了。

Rclone挂载网盘还是挺方便的,尤其是在同步备份中可以方便地对网站的数据进行同步。而且如果你有多个谷歌网盘的话,还可以利用Rclone实现相互拷贝复制文件。Rclone的SFTP挂载也可以当成备份工具。

文章出自:挖站否 https://wzfou.com/rclone-cos-fuse-ossfs/,内容参考自:liyuansxiaozxiaoz.me 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

文章更新于: %s = human-readable time difference 下午10:22

Qi

关于站长(Qi),2008年开始混迹于免费资源圈中,有幸结识了不少的草根站长。之后自己摸爬滚打潜心学习Web服务器、VPS、域名等,兴趣广泛,杂而不精,但愿将自己经验与心得分享出来与大家共勉。

查看评论

  • 2019/02/22 13:44:21 mount helper error: fusermount: fuse device not found, try 'modprobe fuse' first
    2019/02/22 13:44:21 Fatal error: failed to mount FUSE fs: fusermount: exit status 1
    有没有FUSE一键安装命令?centos7

  • 通过rclone把google drive挂载到vps上了,之前提前在vps建立了nextcloud,然后在nextcloud里添加了外部存储(这个挂载的google drive网盘),但是发现播放视频的时候缓冲速度会很慢……vps线路的延迟也不高,大概90多ms

      • 好的,我直接在gd下面播放视频速度是OK的,很快,下载文件的话大概8-9MB的速度
        还有一个情况求助下……
        我发现在nextcloud下操作文件可以实时在gd下面看到反馈,但是在gd下面操作文件nextcloud这边没有反应……
        不知道为什么。。。

  • 大佬可以帮我解决一个问题么?root安装docker运行resiliosync在rclone挂载的google drive盘里没有写入权限。

  • 我一直用的是gdrive这个工具来备份数据到网盘,看起来rclone好像功能更多点
    另外正在寻求一种能直接把网盘当SD卡一样挂载的灵活度更高的软件,就是存文件不必使用vps的硬盘,直接读写网盘(类似某云的云硬盘?!

    • 意思是在Windows上挂载网盘?可以使用WebDAV协议,将网盘映射为本地硬盘,或者使用这个网盘工具:http://netdrive.net/

      • 没错是更灵活的挂载网盘,但不是windows,是在linux上。因为最近换了b#wh的c3机子,硬盘太小了只有10g,想映射个云端盘啥的把部分网站数据直接放在上面,不占用vps的硬盘。我觉得应该有软件可以做到,但是这里面又牵扯到linux的权限机制在网盘架构上的实现,感觉挺困难的

        • 那就可以使用NFS远程挂载,或者可以用GlusterFS共享存储,将其它的VPS的硬盘挂载到你现在的这个主机的硬盘上。不过,如果要挂载网盘的话,还是用google-drive-ocamlfuse:https://wzfou.com/linux-vps-drive/,这个和Gdrive挂载有所不同,前者是挂载,后台貌似是同步。