有时候我们买了一台VPS,线路配置都不错,但是硬盘空间比较小,像搬瓦工,79刀,才20G的硬盘,随便放点东西就快占满空间了,有没有办法解决呢?
有的,搭配之前的E5提供的5TOneDrive免费空间,加上谷歌的团队盘,我们可以分分钟扩容我们的小鸡,让他变成一只大盘鸡!
Rclone配置
Rclone的配置见:https://blog.laoda.de/archives/aria2-rclone-filebrowser#toc-head-16
配置好了OD和GD,名字分别为od_bwg
和gd
挂载GD
到这里结束配置 rclone,下面要把 Google Drive 网盘挂载到云主机/Vps 上和设置开机自启,自动挂载 Google Drive 网盘
首先安装fuse:
apt-get install fuse3 #debian
yum install fuse3 #centos
新建一个你要挂载的目录,例如我要挂载到/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,使用量和本本地主机路径即成功挂载:
接下来设置开机自动挂载,先把 rclone 的可执行文件复制到/usr/bin:
cp /usr/local/rclone/rclone /usr/bin/rclone
新建一个/usr/lib/systemd/system/rclone.service 文件
vi /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
注意修改挂载命令为你主机的路径。
如果需要挂载多个网盘(比如我还要挂在一个OD),按上面的教程新运行个 Rclone 配置,再新建一个/etc/systemd/system/rclone2.service
文件:
vi /etc/systemd/system/rclone2.service
内容如下:
[Unit]
Description = rclone
[Service]
User = root
ExecStart = /usr/bin/rclone mount od_bwg: /home/odrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000
Restart = on-abort
[Install]
WantedBy = multi-user.target
如果还有第三个,就以此类推,再新建一个/etc/systemd/system/rclone3.service
文件:
然后重载 daemon,让新的服务文件生效:
systemctl daemon-reload
用 systemctl 来启动 rclone
systemctl start rclone
systemctl start rclone2 #OD的
设置开机启动:
systemctl enable rclone
systemctl enable rclone2 #OD的
停止、查看状态可以用:
systemctl stop rclone
systemctl status rclone
systemctl stop rclone2 #OD的
systemctl status rclone2 #OD的
重启你的云主机/VPS:
reboot
重启后查看一下 rclone 的服务是否启动,GoogleDrive 是否正常挂载
systemctl status rclone
df -h
OK ! 完成.
如何上传、同步
为什么不直接把文件目录设置成挂载目录?如果直接把文件目录指定到挂载目录,会出现各种莫名其妙的错误,比如:文件无法写入、读取、保存到 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命令把本地目录/home/backup
同步到网盘的 rs2000_sync
目录,忽略在网盘上已备份的文件,且需要显示同步的进度。
实现:
rclone sync /home/backup remote:rs2000_sync --progress --ignore-existing
在这个命令中:
sync
是同步操作。/home/backup
是要同步的本地目录。remote:rs2000_sync
是网盘上的目标目录,其中remote
是您的网盘配置名称(请根据实际情况替换)。--progress
选项用于显示同步进度。--ignore-existing
选项用于忽略已经在目标目录中存在的文件。
请注意,在执行此命令之前,请确保已正确配置rclone以连接到你的网盘服务。如果还没有配置rclone,参考上文配置。
注意:
其实,如果没有加--ignore-existing
,也不会默认再次上传之前已经存在的文件。
如果没有加 --ignore-existing
,rclone sync
命令会检查源目录和目标目录中的文件。如果目标目录中的文件与源目录中的文件有差异(例如文件内容或文件大小不同),rclone 将更新目标目录中的文件以与源目录保持一致。
rclone sync
会尽力确保目标目录与源目录保持一致。它会复制新增的文件、更新已更改的文件,并删除目标目录中源目录不存在的文件。这意味着,在默认情况下,它不会再次上传已经存在且未更改的文件。
所以这句命令存在的意义是什么呢,反正不加上也是增量同步?
来自ChatGPT的回答:
您是对的,rclone sync
默认执行增量同步,即使不使用--ignore-existing
选项。这个选项在某些特定情况下可能会有用。例如,如果您希望在同步过程中完全跳过目标目录中已存在的文件,而不是检查它们的差异,那么 --ignore-existing
可以加快同步过程。
在大多数情况下,您不需要使用 --ignore-existing
选项,因为 rclone sync
默认已经非常高效地执行增量同步。使用此选项可能对那些希望避免不必要的文件检查以节省时间或资源的用户有所帮助。
总之,--ignore-existing
选项的意义在于为用户提供更多的同步选项,以便根据特定需求进行调整。然而,在大多数情况下,不使用这个选项,rclone sync 仍然可以有效地完成增量同步。
其他
其他问题可以参考 Rclone 帮助文档 :https://rclone.org/googlecloudstorage/
评论区