首页 > 技术 > 正文

#教程# 使用Rclone挂载Google Drive到云主机/VPS 扩容硬盘

Rclone是一个Github上面的一个开源项目,专门开发用来在Linux上面同步文件/文件夹,上传的一个命令行工具。目前很多人喜欢用VPS做离线下载,不过由于有的服务器硬盘太小了,我们可以通过挂载Google Drive网盘的方法,实现扩容。

Rclone是一个 Github 上面的一个开源项目,专门开发用来在 Linux 上面同步文件/文件夹,上传的一个命令行工具。目前很多人喜欢用 VPS 做离线下载,不过由于有的服务器硬盘太小了,我们可以通过挂载Google Drive网盘的方法,实现扩容。(Google Drive有 15G 免费的空间,也可以去某宝购买一个无限空间的账号,理论上能够实现无限存储)

本教程仅在 CentOS 7 下测试成功,其他版本并未测试仅供参考;

首先安装 EPEL 源:

yum -y install epel-release

接下来安装一些基本组件和依赖:

yum -y install wget unzip screen fuse fuse-devel

下载Rclone-解压-重命名文件夹-进入文件夹

cd /usr/local

wget wget https://downloads.rclone.org/v1.47.0/rclone-v1.47.0-linux-amd64.zip

unzip rclone-v1.47.0-linux-amd64.zip

mv rclone-v1.47.0-linux-amd64 rclone

cd rclone

目前最新版本是 1.47.0,rclone 会随时间推移而更新,可以到 rclone 官网 查看最新版本然后替换地址即可;

运行Rclone开始配置:

./rclone config

第一步选择 n(新建),然后回车输入一个 name(名字),例如:这里我创建的名字为 gd

No remotes found - make a new one

n) New remote

s) Set configuration password

q) Quit config

n/s/q> n

name> gd

这里选择你需要配置的存储类型,我这里选择 12(Google Drive),根据版本变化选择的序号会不同看清楚 Google Drive 再选择,如果要挂载其他的选填数字即可:

Type of storage to configure.

Enter a string value. Press Enter for the default ("").

Choose a number from below,or type in your own value

1 / A stackable unification remote,which can appear to merge the contents of several remotes

"union"

2 / Alias for a existing remote

"alias"

3 / Amazon Drive

"amazon cloud drive"

4 / Amazon S3 Compliant Storage Provider (AWS,Alibaba,Ceph,Digital Ocean,Dreamhost,IBM COS,Minio,etc)

"s3"

5 / Backblaze B2

"b2"

6 / Box

"box"

7 / Cache a remote

"cache"

8 / Dropbox

"dropbox"

9 / Encrypt/Decrypt a remote

"crypt"

10 / FTP Connection

"ftp"

11 / Google Cloud Storage (this is not Google Drive)

"google cloud storage"

12 / Google Drive

"drive"

13 / Hubic

"hubic"

14 / JottaCloud

"jottacloud"

15 / Local Disk

"local"

16 / Mega

"mega"

17 / Microsoft Azure Blob Storage

"azureblob"

18 / Microsoft OneDrive

"onedrive"

19 / OpenDrive

"opendrive"

20 / Openstack Swift (Rackspace Cloud Files,Memset Memstore,OVH)

"swift"

21 / Pcloud

"pcloud"

22 / QingCloud Object Storage

"qingstor"

23 / SSH/SFTP Connection

"sftp"

24 / Webdav

"webdav"

25 / Yandex Disk

"yandex"

26 / http Connection

"http"

Storage> 12

接下来会叫选填 Google Application Client ID 和,这里 2 项都留空回车即可:

Google Application Client Id

Leave blank normally.

Enter a string value. Press Enter for the default ("").

client_id>

Google Application Client Secret

Leave blank normally.

Enter a string value. Press Enter for the default ("").

client_secret>

rclone 在请求从驱动器访问时应使用的范围,这里选 1 即可

Scope that rclone should use when requesting access from drive.

Enter a string value. Press Enter for the default ("").

Choose a number from below,or type in your own value

1 / Full access all files,excluding Application Data Folder.

"drive"

2 / Read-only access to file metadata and file contents.

"drive.readonly"

/ Access to files created by rclone only.

3 | These are visible in the drive website.

| File authorization is revoked when the user deauthorizes the app.

"drive.file"

/ Allows read and write access to the Application Data folder.

4 | This is not visible in the drive website.

"drive.appfolder"

/ Allows read-only access to file metadata but

5 | does not allow any access to read or download file content.

"drive.metadata.readonly"

scope> 1

选填文件夹 ID 和帐户凭据 JSON 文件路径,这里我都留空回车的

ID of the root folder

Leave blank normally.

Fill in to access "Computers" folders. (see docs).

Enter a string value. Press Enter for the default ("").

root_folder_id>

Service Account Credentials JSON file path

Leave blank normally.

Needed only if you want use SA instead of interactive login.

Enter a string value. Press Enter for the default ("").

service_account_file>

问你是否要编辑高级配置,这里我选择 N

Edit advanced config? (y/n)

y) Yes

n) No

y/n> n

是否自动远程配置,这里选择 N,因为你在手动远程配置

Remote config

Use auto config?

* Say Y if not sure

* Say N if you are working on a remote or headless machine

y) Yes

n) No

y/n> n

接下来会给出 Google Drive 的授权地址,把它复制到浏览器打开,按提示登陆,复制获取到的代码,然后返回 SSH 粘贴后回车

If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=202264815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=55663e7e07382e3dddb9025c86de4f

Log in and authorize rclone for access

Enter verification code> 4/UQGiRz375eb-OixO5EUtZMxBhJwAQ4zOyvA1wtJWKq2Ocmzh3zNYE

问你是不是将其配置为团队网盘,这里选 N

Configure this as a team drive?

y) Yes

n) No

y/n> n

列出你上面修改的配置信息,问你是否删除、编辑或者确定配置信息,这里选择确定 y

--------------------

[gd]

type = drive

scope = drive

token = {"access_token":"ya29.GlsQByNiBURlXoPpe-bDpa2kF99Jo4rrmjicBXdWIT6loPUhS7SJ9XWUIk2LP4vO231nra_zpUwHn6no0Y_LBbXYFZvyVf0gRthepF2VuPFdhBFEKY7XYJaelt","token_type":"Bearer","refresh_token":"1/ry1JGhRiqqE6-PqRN-S2icZ_Oz9uOTXfSNxWA85zUnjU5gEm-6TejL6o-hjyuY","expiry":"2019-05-21T04:36:23.300542043-04:00"}

--------------------

y) Yes this is OK

e) Edit this remote

d) Delete this remote

y/e/d> y

问你是否修改、删除、退出配置编辑,这里选择退出 q

Current remotes:

Name Type

==== ====

gd drive

e) Edit existing remote

n) New remote

d) Delete remote

r) Rename remote

c) Copy remote

s) Set configuration password

q) Quit config

e/n/d/r/c/s/q> q

到这里结束配置 rclone,下面要把 Google Drive 网盘挂载到云主机/Vps 上和设置开机自启,自动挂载 Google Drive 网盘

新建一个你要挂载的目录,例如我要挂载到/home/gdrive

mkdir -p /home/gdrive

再执行挂载命令:

./rclone mount gd: /home/gdrive --allow-other --allow-non-empty --vfs-cache-mode writes

gd 为Rclone的配置名称,比如你在创建配置 rclone 的时候 Name 填的 gd,/home/gdrive 为本地路径;

这里还可以自定义设置网盘里的文件夹路径,例如:

./rclone mount gd:backup /home/gdrive --allow-other --allow-non-empty --vfs-cache-mode writes

gd:backup gd 为Rclone的配置名称:backup 为网盘里的目录名

卸载 Google Drive 磁盘

fusermount -qzu /home/gdrive

挂载只要几秒钟,但终端不会返回成功信息,关闭 SSH 重连即可。

重连后查看是否挂载成功:

df -h

有看到 gd,15G 硬盘,使用量和本本地主机路径即成功挂载

gd: 15G 1.1M 15G 1% /home/gdrive

接下来设置开机自动挂载,先把 rclone 的可执行文件复制到/usr/bin:

cp /usr/local/rclone/rclone /usr/bin/rclone

新建一个/usr/lib/systemd/system/rclone.service 文件内容为:

[Unit]

Description=rclone

[Service]

User=root

ExecStart=/usr/bin/rclone mount gd: /home/gdrive --allow-other --allow-non-empty --vfs-cache-mode writes

Restart=on-abort

[Install]

WantedBy=multi-user.target

注意修改挂载命令为你主机的路径

如果需要挂载多个网盘,按上面的教程新运行个 Rclone 配置,再新建一个/etc/systemd/system/[email protected] 文件

# cat /etc/systemd/system/[email protected]

[Unit]

Description=rclone mount %I drive

After=network.target

[Service]

#Type=notify

Type=simple

#PrivateTmp=true

ExecStart=/usr/bin/rclone mount %i: /home/%i --allow-other --config /root/.config/rclone/rclone.conf

[Install]

WantedBy=multi-user.target

/home/%i 为挂载目录,可以自行设置路径例如:/root/%i

然后用这个启动命令:

for a in `grep '^[' /root/.config/rclone/rclone.conf`

do

b=${a:1:-1}

[ ! -d "/root/${b}" ] && mkdir /root/${b}

systemctl enable [email protected]${b}

systemctl start [email protected]${b}

done

重载 daemon,让新的服务文件生效:

systemctl daemon-reload

用 systemctl 来启动 rclone

systemctl start rclone

设置开机启动:

systemctl enable rclone

停止、查看状态可以用:

systemctl stop rclone

systemctl status rclone

重启你的云主机/VPS:

reboot

重启后查看一下 rclone 的服务是否启动,GoogleDrive 是否正常挂载

systemctl status rclone

df -h

OK ! 完成.

把文件上传到 Google Drive

为什么不直接把文件目录设置成挂载目录?如果直接把文件目录指定到挂载目录,会出现各种莫名其妙的错误,比如:文件无法写入、读取、保存到 Googlr Drive 的文件不完整等等奇葩的问题。

这里可以用同步命令,本地目录/home/backup 同步到网盘的 backup 目录

rclone sync /home/backup gd:backup

相反,把目录调整下,就是把网盘 backup 目录同步到 VPS 目录/home/backup

rclone sync gd:backup /home/backup

通过添加此参数 --ignore-existing 可以忽略在网盘上已备份的文件,这相当于增量备份

rclone copy --ignore-existing /home/backup gd:backup

如果挂载 2 个网盘的话,可以同步配置名 gd2 的网盘里的 backup 目录,到配置名为 gd 的网盘的 backup 目录,反之亦然

rclone sync gd2:backup gd:backup

其他问题请参考 rclone 帮助文档 https://rclone.org/googlecloudstorage/


网友评论

验证码 换一张
取 消
暂无评论...
为您推荐
  • 相关阅读
  • 业界资讯
  • 手机通讯
  • 电脑办公
  • 新奇数码
  • 软件游戏
  • 科学探索