给VPS挂载网盘
安装Rclone
对Linux/macOS/BSD系统挺简单的:
curl https://rclone.org/install.sh | sudo bash
等它几秒刷刷跑完,就安好了。
连接网盘的准备步骤
- 很可能会需要一把梯子
先连接上网盘,然后再挂载。
连接一个微软OneDrive
大概是需要你的VPS位于国外,因为国内有一半是墙的。。。另外自动验证时也有可能需要科 学 上 网
。
另外,如果你的VPS是基于OpenVZ的,你还有可能遇到一个问题,就是FUSE没开,而你自己又开不了。遇到这个问题的时候,没啥办法,开一张工单(ticket)问(qiu)问(qiu)客服能不能给你开吧。(所以还是KVM更禁得住折腾啊~怎么折腾都不需要问别人的同意)
OneDrive的容量还是挺大的,1T。留学生们基本人手一个了(学校账户/alumni校友账户),淘宝也有一些在买的(可以很便宜的买到5T甚至25T的,也就几块到几十块),不过不清楚会不会被封、以及具体能用多久。
rclone config
- 会有一系列选项,选
n) New Remote
,然后输入一个名称(来称呼这个连接的这个网盘),这里我以OneDrive
举例。 - 在系统问
storage>
的时候,输入onedrive
。 - client_id和client_secret直接回车
- advanced config直接回车,auto config选no(否则后续会给你一个
127.0.0.1:53682
的地址用于授权,除非你的vps有按vnc和桌面,或者开放53682了端口。但是没必要) - 它会让你选一下你是在连接哪里的one drive
- 控制台会显示一个网址,复制并在你的浏览器打开
- 网址会跳转到微软登录、授权页面,确认授权后会跳转,如果出现一个说"Success! All done. Please go back to rclone."的页面,这个网址的任务就完成了~
- 返回终端处,它会让你选择一个类型。输入
onedrive
,会列举所有在浏览器登录的微软账号下OneDrive(全是内部id,难以观察谁是谁,建议在上面步骤授权时开浏览器无痕模式,且只登录一个微软账号) - 一路回车,加好了~
- 测试,退出rclone config,然后
rclone lsd OneDrive:
(list directory,显示网盘根目录下所有目录) - 测试成功,就可以正常使用了~
连接一个Mega
这也是一个被墙的网盘。。。没有OneDrive给的容量那么大(但OneDrive其实并不免费),但在免费网盘里已经算容量比较大的了,上来就给30G,谷歌才15G耶。
rclone config
,输入一个名称(识别这个网盘连接),比如Mega
- 网盘选
mega
- user name填你注册网盘的邮箱地址
- enter password选y然后输入自己网盘的密码两边
- 选y确认
- 测试,
rclone lsd Mega:
(Mega的位置填你输入的第一步的名称)
连接一个Google Drive
Google每个账户有免费的15G网盘,似乎并没有每个人可以注册的账号数限制?但是需要科 学 上 网
。
rclone关于使用默认client id的警告,以及如何创建自己的client id
用Rclone连接谷歌网盘的时候,如果client id使用默认的空值,rclone会使用一个公有client id访问谷歌网盘。由于谷歌网盘对每个client id的每秒查询次数有限制,使用默认的公有id可能会导致访问限速。
创建一个自己的client id
- 首先在一个无痕窗口登录谷歌账号(对于登录了好几个谷歌账号的情况。。。为了方便连接一个网盘)
- 去谷歌云控制台
- 位置选离你服务器近的?其实可能无所谓,顶多影响那5个G的免费Google Cloud Storage。谷歌free tier的VPS免费出站流量每个月才1GB还不包含对中国和澳洲的出站流量,不太用得到。
- 创建一个应用,名称随便,比如Google Drive to Rclone之类的
- 点“启用API与服务” (Enable APIs and Services),搜索Google Drive API,然后启用
- 回到项目的面板上,选右侧菜单的“凭据”(Credentials)
- 点左侧窗口的按钮“配置同意屏幕”(Configure Consent Screen)(已经配过的无视这步)。
- User Type选外部(external),应用名称随便,比如rclone。
- 其他必填的信息主要就是电子邮件,写自己的就好
- 注意,在不发布应用的情况下,需要在Oauth测试用户里填写上自己这个google账号(邮箱),否则之后网盘验证时会有403 Access Denied
- 一路保存并继续
- 然后再左侧点击“创建凭据”(Create Credential),选OAuth客户端ID (OAuth client ID),然后类型选桌面应用(Desktop App),然后你就有客户端id和秘钥了。
- 接着
rclone config
,输入名称,比如GoogleDrive
- 选择网盘那里输入
drive
(你看这待遇。。。Google Drive的选项直接就是drive) - client_id输入刚刚获得的那个id
- client_secret输入刚刚获得的那个秘钥
- Scoop选drive获得Application Data以外的读写权(Application Data是应用写入用户google drive的,比如google play store里app的云存储或者游戏的存档)
- root folder id和service account file可以直接回车(空),use advanced选no,auto config直接回车选默认就好
- 像往常一样复制给出的网址到那个登录了谷歌账号的无痕窗口打开,然后授权。会有几个屏幕一遍一遍问你是否信任开发者,这是未经谷歌检验并发布的应用等等,一路确认信任(咱为啥要不信任咱自己??)
- 再次看到Success页面。Done!
挂载一个OneDrive
-
如果前面的步骤是在非root用户下进行的,那么除非你将用户的rclone.conf(位于~/.config/rclone/rclone.conf)复制到/root/.config/rclone/rclone.conf,那么在root那里是没有这些网盘的记录的。
-
如果在挂载中要用--allow-other,那么需要先行去/etc/fuse.conf把allow-other的注释去掉(启用allow other)
-
创建一个文件夹作为你要挂载的位置,比如
/home/<username>/mnt/onedrive
-
在有网盘config的用户下,
rclone mount OneDrive: /home/<username>/mnt/onedrive --allow-other --allow-non-empty --vfs-cache-mode writes
。其中Onedrive也可以是其他已经假如config可以连接的网盘,挂载位置只要存在且用户有权访问。--vfs-cache-more writes并不是所有网盘都需要,仅在网盘不支持streaming的情况下rclone才会提示需要设置为writes或者full -
执行完这条几秒之后,如果没反应,那八成是挂载成功了。需要断开ssh重新连接,然后
df -h
。 -
如果
df -h
里面你看到了自己挂的网盘,那就挂载成功了,可以像本地硬盘一样读写了(不过肯定比本地硬盘慢的)
设置开机挂载
whereis rclone
一下,如果在/usr/bin/rclone就不用管了- 如果不在那里,比如在/usr/local/rclone/rclone,那就复制过去/usr/bin/rclone
nano /usr/lib/systemd/system/rclone.service
,模板:
[Unit]
Description=rclone
[Service]
User=root
ExecStart=/usr/bin/rclone mount OneDrive: /home/<user_name>/mnt/onedrive --allow-other --allow-non-empty --vfs-cache-mode writes
Restart=on-abort
[Install]
WantedBy=multi-user.target
编辑好后,
重新加载新的service
systemctl daemon-reload
设置开机启动
systemctl enable rclone