安装

  • Linux Rclone官方提供了一键安装脚本:
curl https://rclone.org/install.sh | bash 
apt install -y fuse3
  • Win
scoop install rclone
#cd C:\Users\Administrator\scoop\apps\rclone
#dir

配置

第一次配置

在终端输入 rclone config 进行配置

rclone config - 进入交互式配置选项,进行添加、删除、管理网盘等操作。

详细操作参见:《Rclone 安装配置教程

再次重复配置

  • 备份

rclone config file - 显示配置文件的路径,一般配置文件在 ~/.config/rclone/rclone.conf

rclone config show - 显示配置文件内容,复制备份

  • 恢复
mkdir -p  ~/.config/rclone
cat > ~/.config/rclone/rclone.conf <<EOF

rclone.conf配置文件内容

EOF

指定rclone配置文件启动

默认配置:/root/.config/rclone/rclone.conf

--config /root/.config/rclone/rclone.conf

#例如
rclone lsd gd_share: --config=~/.config/rclone/rclone.conf

启动

rclone常用命令


### 文件上传
rclone copy /home/backup gdrive:backup  # 本地路径 配置名字:网盘文件夹路径
### 文件下载
rclone copy gdrive:backup /home/backup  # 配置名字:网盘文件夹路径 本地路径
### 新建文件夹
rclone mkdir gdrive:backup              # 配置名字:网盘文件夹路径
### 获取文件夹大小
rclone size gdrive:backup               # 配置名字:网盘文件夹路径

### 列表
rclone ls gdrive:backup
rclone lsl gdrive:backup # 比上面多一个显示上传时间
rclone lsd gdrive:backup # 只显示文件夹
### 挂载
rclone mount gdrive:mm /root/mm &
### 卸载
fusermount -u  /root/mm

#### 其他 ####
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。   –-dry-run标志来检查要复制、删除的数据
rclone move - 将源数据移动到目的地址,如果要在移动后删除空源目录,请加上 --delete-empty-src-d
rclone delete - 删除指定路径下的文件内容。
rclone purge - 清空指定路径下所有文件数据。
rclone mkdir - 创建一个新目录。
rclone rmdir - 删除空目录。
rclone rmdirs - 删除指定灵境下的空目录。如果加上 --leave-root 参数,则不会删除根目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd - 列出指定路径下所有的目录/容器/桶。
rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone lsf - 列出指定路径下所有文件和目录
rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。
rclone size - 获取指定路径下,文件内容的总大小。.
rclone version - 查看当前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。
fusermount -qzu 挂载网盘的文件夹绝对路径 - 取消挂载网盘,不用了以后一定要取消哦。

单次任务:移动、复制、同步

  • 命令格式
# 本地到网盘
rclone [copy/sync/move] <本地路径> <网盘名称:路径> [参数] [参数]
# 网盘到本地
rclone [copy/sync/move] <网盘名称:路径> <本地路径> [参数] [参数]
# 网盘到网盘
rclone [copy/sync/move] <网盘名称:路径> <网盘名称:路径> [参数] [参数]
rclone copy
  • 实现效果: 将文件从源复制到目的地址,跳过已复制完成的。复制总是指定路径下的数据;而不是当前目录。
  • 补充说明:–no-traverse 标志用于控制是否列出目的地址目录。
  • 命令格式:rclone copy source:sourcepath dest:destpsth
rclone sync
  • 实现效果: 将源数据同步到目的地址,只更新目的地址的数据。同步的始终是 path 目录下的数据,而不是 path 目录(空目录将不会被同步)。同步数据时,可能会删除目的地址的数据;
  • 补充说明: 建议先使用–dry-run 标志来检查要复制、删除的数据。 同步数据出错时,不会删除任何目的地址的数据。
  • 命令格式:rclone sync source:path dest:path
rclone move
  • 实现效果: 将源数据移动到目的地址。同步数据时,可能会删除目的地址的数据
  • 补充说明: 建议先使用–dry-run 标志来检查要复制、删除的数据。
  • 命令格式:rclone move source:path dest:path

例子

以移动move为例:


rclone copy GDrive:测试 Nas:测试
rclone sync GDrive:测试 /root/sync/测试
rclone move /root/本地目录 rclone配置名称:/挂载远程下的可新建目录 --transfers 8 -vP

#--transfers默认4线程,
#-P(大写)显示上传详情,
  • 后台运行
#使用screen后台运行
screen 

#为screen任务起名
screen -S mv rclone move /root gdrive:server_sync/test --transfers 4 -P

#分离模式(不占用当前shell)
/usr/bin/screen -dmS mv /usr/bin/rclone move  /root gdrive:server_sync/test --transfers 4 -P
  • 定时任务

29 5 * * * rclone move  /root gdrive:server_sync/test --transfers 4 --bwlimit 10M -P --no-traverse --buffer-size 64K \
--vfs-read-wait 0ms \
--vfs-read-chunk-size 64K \
--vfs-read-chunk-size-limit 256K \
       >/dev/null 2>&1 &
       

长期运行:挂载

单次挂载(测试)

挂载前先不要用–daemon参数,方便查看具体报错信息

#个人盘
rclone mount gd_fit: /gdrive --allow-other --allow-non-empty --vfs-cache-mode writes

#共享盘(团队盘)
rclone mount gd_share: /gdrive --allow-other --allow-non-empty --vfs-cache-mode writes --umask 000 --daemon

#其中gd_share是rclone配置时输入的配置名称,/gdrive是挂载目录,–daemon是指后台运行。

上面是挂载整个,如果要挂载单个文件夹,只要在gd_fit:后面紧加上Drive里文件夹的名字,即可挂载单个文件夹

  • 查看是否挂载成功:
df -h

Linux下开机挂载

  • 使用crontab

@reboot rclone mount tera:/ /mnt/rclone/tera --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode writes --ignore-checksum --size-only --buffer-size 64M -vP --log-file ~/.cache/rclone.log --daemon
使用systemd

新建systemd配置模板[email protected](适用CentOS 7、Debian 8+、Ubuntu 16+)

特殊的: Rclone单独设置缓存目录,提前加入环境变量:

echo "export RCLONE_CACHE_DIR=/mnt/cache/rclone" >> /etc/profile



#以下是一条龙命令,一起复制到SSH客户端运行
cat >/etc/systemd/system/[email protected] <<EOF
[Unit]
Description=Rclone Mount: %i   # systemd占位符:@ 符号之后的部分
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
Restart=always
RestartSec=4
StartLimitInterval=10
StartLimitBurst=5


ExecStartPre=/bin/sh -c '[ -n \$(ls -A /%i) ] ; rm -r /%i/* ; rm -r '\${RCLONE_CACHE_DIR:-/root/.cache/rclone}/vfs' '  # 启动前清空挂载和缓存目录
ExecStart=rclone mount %i: /%i --umask 000 --default-permissions --allow-other --allow-non-empty --attr-timeout 10m --vfs-cache-mode writes --vfs-cache-max-age 10h --vfs-cache-max-size 10G  --vfs-read-chunk-size 16M  --vfs-read-chunk-size-limit 1G --ignore-checksum --size-only --bwlimit 73M --buffer-size 1M  --transfers 4 \
--config /root/.config/rclone/rclone.conf \
--cache-dir \${RCLONE_CACHE_DIR:-/root/.cache/rclone} `#没有环境变量则用默认` \
-vP
ExecStop=/bin/sh -c 'lsof|grep /%i |awk '{print \$2}' |xargs kill ; /usr/bin/fusermount -u /%i ; /usr/bin/fusermount3 -u /%i'

[Install]
WantedBy=multi-user.target

EOF

创建全部服务实例,并启动(按rclone配置项名称)


for a in $(grep '^\[' /root/.config/rclone/rclone.conf); do
    b=${a:1:-1}  #去掉头尾(`[`和`]`)。
    # 检查是否已经创建了挂载目录(以配置项名称为名),如果没有则创建挂载目录
    [ ! -d "/${b}" ] && mkdir -p /${b}
    #先停止
    systemctl daemon-reload
    systemctl disable rclone@${b}
    systemctl stop rclone@${b}
    #再启动
    systemctl enable rclone@${b}
    systemctl start rclone@${b}
done

Windows下开机挂载

#TODO

其他

rclone运行选项

限速

--bwlimit 10M

意味着将上传和下载带宽限制为 10 MiB/s。 注意这是每秒字节数而不是每秒位数。要使用单个限制,请以 KiB/s 为单位指定所需的带宽,或使用后缀 B|K|M|G|T|P。默认是0不限制带宽。上传和下载带宽可以单独指定,如 --bwlimit UP:DOWN,所以

--bwlimit 10M:100k

这意味着将上传带宽限制为 10 MiB/s,将下载带宽限制为 100 KiB/s。任何一个限制都可以“关闭”意味着没有限制,所以只限制您将使用的上传带宽

--bwlimit 10M:off

这会将上传带宽限制为 10 MiB/s,但下载带宽将不受限制。

参考

Rclone技巧 & 加载Google Drive到本地目录 https://blog.gwliang.com/2020/07/24/mount-gd-for-rclone/