本文关于Google Drive – 如果是加载Microsoft OneDrive加载到本地,参考本馆档案。
使用RClone+Google Drive 最好有你自己的Google Drive Client ID & Secret. 查看这篇我之前写的文章。
安装RClone + Google Drive 实现自动备份,另外一篇。
利用Rclone和Aria2配合做到下载后马上转移Google Drive的方法在这。
这里讲另外一种,就是 –
1- 下载并配置 RClone 和 Google Drive 配对, 参考本馆档案.
2- 安装 fuse
apt install -y fuse
3- 加载Google Drive到本地目录
# --copy-links - 显示软链接内容 # --no-gzip-encoding - 不使用 gzip-encoding # --no-check-certificate - 不验证ssl证书 # --allow-other - 允许其它用户访问 # --allow-non-empty - 允许挂载目录非空 # --umask 000 - 覆写文件掩码为 000 # --vfs-cache-max-size 5G 可选, 如果本地硬盘空间太小的话 Max total size of objects in the cache (default off) # --vfs-cache-max-age 6h 如果只是流媒体,可以改成1m Max age of objects in the cache (default 1h0m0s) # --vfs-read-chunk-size 16M Read the source objects in chunks (default 128M) # --vfs-read-chunk-size-limit 0 Max chunk doubling size (default off,也就是0) # --daemon-timeout 30m Time limit for rclone to respond to kernel (not supported on Windows) # --daemon 不能在linux systemctl service当中使用 # --attr-timeout 10m 10分钟内默认文件属性不改变 ### gd_omgd: 是我做rclone config时候自己取的名字 ### _vps是google drive上的目录,也可以是根目录 gd_omgd:/ drivename='gd_omgd' # ---------------------------- # 如果之前目录弄错了 - 应该放到/drive/下面 # fusermount -qzu ~/${drivename} && rmdir ~/${drivename} # ---------------------------- targetloc="/drive/${drivename}" mkdir -p ${targetloc} && ln -s ${targetloc} ~/${drivename} /usr/bin/rclone mount ${drivename}: ${targetloc} --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode writes --vfs-read-chunk-size 16M # 或者指定cache size & age #/usr/bin/rclone mount ${drivename}: ${targetloc} --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode writes --vfs-cache-max-size 6G --vfs-cache-max-age 1h --vfs-read-chunk-size 16M --daemon-timeout 30m # 如果本地硬盘很小, 可以 turn off cache # mount root folder of remote drive # (update-20200512) 谷歌云盘不允许这么做,会出错 #/usr/bin/rclone mount ${drivename}: ${targetloc} --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode off --daemon-timeout 30m ### 卸载 fusermount -qzu /drive/${drivename}
值得注意的是,rclone mount 是不如 rclone sync/copy 鲁棒的,因为sync/copy会在出错的时候retry很多次。
开机自动加载 -方法1
参考这篇:
### 安装 cd /root wget -N git.io/rcloned vi rcloned NAME="gd_omgd" #Rclone配置时填写的name REMOTE='' #远程文件夹,网盘里的挂载的一个文件夹,留空为整个网盘(也可以是某个目录,如_vps) LOCAL='/root/GdriveOMGD' #挂载地址,VPS本地挂载目录 LOG="/$HOME/.rclone/rcloned.log" mv rcloned /etc/init.d/rcloned chmod +x /etc/init.d/rcloned update-rc.d -f rcloned defaults # Debian/Ubuntu bash /etc/init.d/rcloned start ### 管理 #开始挂载 bash /etc/init.d/rcloned start #停止挂载 bash /etc/init.d/rcloned stop #重新挂载 bash /etc/init.d/rcloned restart #查看日志 tail -f /$HOME/.rclone/rcloned.log ### 卸载 bash /etc/init.d/rcloned stop update-rc.d -f rcloned remove # Debian/Ubuntu rm -f /etc/init.d/rcloned
开机自动加载 – 方法2 (推荐)
参考这篇:https://www.yunloc.com/562.html
drivename='gd_omgd' # ---------------------------- # 如果之前目录弄错,应该放到/drive下面 # fusermount -qzu ~/${drivename} && rmdir ~/${drivename} # ---------------------------- targetloc="/drive/${drivename}" mkdir -p ${targetloc} && ln -s ${targetloc} ~/${drivename} #以下是一整条命令,一起复制到SSH客户端运行 #不能带 --daemon 不然失败 cat > /etc/systemd/system/rclone_${drivename}.service <<EOF [Unit] Description=rclone_${drivename} [Service] User=root # mount root folder of remote drive # 根据磁盘大小设定 cache size (--vfs-cache-max-size 6G --vfs-cache-max-age 6h) 也可以只设定 max-age # 如果用于bt下载和小硬盘的话, 建议比如Aria2当中concurrent download 变成1或2 # 本地硬盘如果够大的话 ExecStart=/usr/bin/rclone mount ${drivename}: ${targetloc} --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode writes # --vfs-cache-max-size 6G --vfs-cache-max-age 6h --vfs-read-chunk-size 16M --daemon-timeout 30m [Install] WantedBy=multi-user.target EOF
重载system service
systemctl daemon-reload # 启动(单次) systemctl start rclone_${drivename} # 设置开机启动: systemctl enable rclone_${drivename} # 停止、查看状态可以用: systemctl stop rclone_${drivename} systemctl status rclone_${drivename}
命令解析
rclone mount od:/file /data/wwwroot/xxx --allow-other --attr-timeout 5m --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 10G --vfs-read-chunk-size-limit 100M --buffer-size 100M --daemon
rclone mount
:是rclone挂载命令od:/file
:上面已经提到,xiaoz提前配置好了OneDrive,并将名称命名为od
,od:/file
则是OneDrive上的路径/data/wwwroot/xxx
:为本地文件夹路径(建议为空目录)--allow-other
:指的是允许非当前Rclone用户外的用户进行访问--attr-timeout 5m
:文件属性缓存,(大小,修改时间等)的时间。如果小鸡配置比较低,建议适当提高这个值,避免过多的和内核交互,占用资源。-vfs-cache-mode full
:开启VFS文件缓存,这样可减少Rclone与API交互,同时可提高文件读写效率--vfs-cache-max-age 24h
:VFS文件缓存时间,这里设置的24小时,如果文件很少更改,建议设置更长的时间--vfs-cache-max-size 10G
:VFS文件缓存上限大小,建议不超过当前空余磁盘的50%vfs-read-chunk-size-limit 100M
:分块读取大小,这里设置的是100M,可提高文件读的效率,比如1G的文件,大致分为10个块进行读取,但与此同时API请求次数也会增多--buffer-size 100M
:内存缓存,如果您内存比较小,可降低此值,如果内存比较大,可适当提高--daemon
:指后台方式运行- 建议添加–allow-other参数,否则可能发生部分程序不可读(无权限)的情况
了解了上面参数含义后,便可根据小鸡的配置来适当调整,以免Rclone发生CPU、内存莫名使用过多,而不知所措。更多参数说明,可参考官方文档:https://rclone.org/commands/rclone_mount/
取消挂载
通常情况,直接使用umount
命令取消挂载即可:
#/path/to/local/mount为挂载目录 umount /path/to/local/mount
或者使用fusermount
fusermount -u /path/to/local/mount
如果提示磁盘繁忙,只能暴力kill杀掉进程了,命令为:
#kill杀掉进程 pgrep 'rclone' | xargs kill -9 #再次取消挂载 umount /path/to/local/mount
一些RClone的主要命令
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中 # 将所有已经配置的云盘都列出来 rclone listremotes rclone copy - 将文件从源复制到目的地址,跳过已复制完成的 rclone copy /home/backup/file.zip gd_omgd:_vps/backup/ rclone copy /home/backup/some_folder google-drive:Sync/backup/some_folder # --ignore-existing 可以忽略在网盘上已备份的文件,这相当于增量备份 rclone copy --ignore-existing /home/backup/some_folder google-drive:Sync/backup/some_folder # move over / delete local rclone move -v /downloads/ubuntu-20.04-live-server-amd64.iso gd_omgd:/_vps/cr1t 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 - 交互式查找重复文件,进行删除/重命名操作