rclone常用及高级命令介绍

2,031 阅读5分钟

下载安装

下载:rclone.org/downloads/

安装:rclone.org/install/

macos下载后,解压出来是二进制文件,copy到合适的目录,使用chmod增加执行权限即可使用

配置

配置文件会存储在:$HOME/$USER/.config/rclone/rclone.conf,可使用命令配置,也可直接编辑该文件

通过命令创建配置

$ //命令,输入n
~/test $ rclone config
Current remotes:

Name                 Type
====                 ====
mbpdev               s3
mylocal              local
ossrc                s3

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> n

远程示例

[HuaweiOBS]
type = s3
provider = HuaweiOBS
env_auth = false
access_key_id = xxxxx
secret_access_key = xxxxxxxxxxxxxxxxxxxxx
region = cn-north-4
endpoint = obs.cn-north-4.myhuaweicloud.com

[TencentCOS]
type = s3
provider = TencentCOS
env_auth = false
access_key_id = xxxxxxxxxxxxxxxx
secret_access_key = xxxxxxxxxxxxxxx
region = ap-shanghai
endpoint = cos.ap-shanghai.myqcloud.com

本地示例

[my-local]
type = local

常用命令

可以使用rclone --help查看所有命令

命令说明
rclone copy复制,本地复制到远程(相当于mc put),或者远程下载到本地(mc get)
rclone sync同步:将源目录同步到目标目录(云端有,本地无,则会删除云端的;本地有,云端无,则会上传到云端)
rclone ls列出指定路径下的所有的文件以及文件大小和路径
rclone lsl比上面多一个显示上传时间
rclone lsd列出指定路径下的目录
rclone lsf列出指定路径下的目录和文件
rclone size查看网盘文件占用大小
rclone delete删除路径下的文件内容
rclone purge删除路径及其所有文件内容
rclone mount挂载,将云上目录挂载到本地

常用参数

可以使用rclone help flags查看参数详情

参数分类:

  • copy、sync、check
  • 过滤
  • 配置
  • 网络
  • 性能
  • 调试
  • 日志
  • backend
参数说明
-n = --dry-run测试运行,查看 rclone 在实际运行中会进行哪些操作
-P = --progress显示实时传输进度,500 ms刷新一次,否则默认1分钟刷新一次--transfers=N并行文件数,默认为4。在比较小的内存的VPS上建议调小这个参数,比如 128M 的小鸡上使用建议设置为1。
--config string指定配置文件路径,string为配置文件路径
--ignore-errors跳过错误
--size-only根据文件大小校验,不校验
hash--retries重试次数
--log-file日志文件,例:--log-file=./rclone.log,--log-file=rclone-date +"%Y%m%d".log
--log-level日志等级,DEBUG|INFO|NOTICE|ERROR,(default NOTICE),INFO相当于-v,debug相当于-vv
--use-json-logjson格式的日志
--dump-headers输出header信息,Dump HTTP headers - may contain sensitive info
--dump DumpFlagsList of items to dump from: headers, bodies, requests, responses, auth, filters, goroutines, openfiles, mapper
--bwlimit UP:DOWN限制带宽,例如:--bwlimit 10M:500K (上传10M,下载500k), --bwlimit 10M:off(上传10m,下载不受限制)
--transfers int并发传输的并发量

高级功能

开启http服务

使用rcd即可开启rclone的http服务,若加了--rc-web-gui参数,即可通过web ui进行可视化操作。

http服务有对应的api,可通过接口操作rclone,同时,也可通过 rc子命令操作远程的rclone。

http服务启动时可配置用户名密码,只有通过认证才能进行操作。

默认的http服务:http://127.0.0.1:5572/

#开启http服务
rclone rcd
#开启带web ui的http服务
rclone rcd --rc-web-gui --rc-user me --rc-pass mypassword
#开启服务并带一个用户认证(明文密码,不建议)
rclone rcd --rc-web-gui --rc-user me --rc-pass mypassword
#开启服务并带用户列表
rclone rcd --rc-web-gui --rc-htpasswd ./htpasswd

htpasswd创建用户列表

~/test/web-gui-root $  htpasswd -c -B htpasswd user001
New password:
Re-type new password:
Adding password for user user001
~/test/web-gui-root $ ls
html       htpasswd   index.html rcd-passwd
~/test/web-gui-root $ rm rcd-passwd
remove rcd-passwd? y
~/test/web-gui-root $ cat htpasswd
user001:$2y$05$caFr10C9Brrv8Msji9TwZOEi43Yh4JNGGlAOvEwE1fxXDioITpCIy

关于auth传参

加密码后,在http请求中需要传认证信息Authorization,其中,若是基础认证,即htpasswd -B,http请求的header中,auth值为base64({use}r:{passwd})

Authorization: Basic Y2hhb3FpOmFkbWluMTIz

rcd还有很多参数,例如配置ip,端口等,详见帮助文档

rc命令操作http服务

~/test $ rclone rc operations/list --json '{"fs": "ossrc:", "remote":"bucket1/dir001"}' --user=user001 --pass=admin123
{
    "list": [
        {
            "IsDir": false,
            "MimeType": "text/plain; charset=utf-8",
            "ModTime": "2024-05-10T11:26:41.077866000+08:00",
            "Name": "file.txt",
            "Path": "bucket1/dir001/file.txt",
            "Size": 12,
            "Tier": "STANDARD"
        },
        {
            "IsDir": false,
            "MimeType": "image/jpeg",
            "ModTime": "2024-09-06T11:29:16.613524978+08:00",
            "Name": "zRvk_I68Le4.jpg",
            "Path": "bucket1/zRvk_I68Le4.jpg",
            "Size": 12767809,
            "Tier": "STANDARD"
        }
    ]
}

更多api详见接口文档

调用http接口

传参时加上 _async=true 参数可异步执行,返回jobid,通过job/status传入jobid可查询任务执行状态

==任务执行完成后,过一小段时间,就查不到该任务了==

~/test $ curl --request POST \
>   --url http://127.0.0.1:5572/sync/copy \
>   --header 'Authorization: Basic Y2hhb3FpOmFkbWluMTIz' \
>   --header 'content-type: application/json' \
>   --data '{ "srcFs": "ossrc:/bucket1/dir001/","dstFs": "mbpdev:/bucket1/k04/", "_async": true}'
#响应
{
    "jobid": 1752
}
~/test $

通过http接口可进行二次开发,比如:

sequenceDiagram
    participant A as MyApp
    participant J as RcloneHttpServe
    A->>J: http://127.0.0.1:5572/sync/copy
    J->>A: jobid
    A->>J: http://127.0.0.1:5572/job/status
    J->>A: status info

backend命令

没搞明白😂

命令行界面操作rclone

$ rclone ncdu ossrc:$MY_OB/dir001
rclone ncdu v1.67.0 - use the arrow keys to navigate, press ? for help
-- ossrc:bucket1/dir001 -------------------------------
   12.176Mi [##########]  zRvk_I68Le4.jpg
         12 [          ]  file.txt


Total usage: 12.176Mi, Objects: 2

http fs服务

通过serve http即可开启http fs服务,通过浏览器查看目录的内容,只可查看命令启动时指定的目录

默认地址:http://127.0.0.1:8080/

$ rclone serve http ossrc:$MY_OB/dir001

创建分享链接

通过link命令即可创建文件、目录的分享链接,通过参数--expire可设置过期时间,通过--unlink可删除分享(看云厂商是否支持)

关于权限等:

If successful, the last line of the output will contain the link. Exact capabilities depend on the remote, but the link will always by default be created with the least constraints – e.g. no expiry, no password protection, accessible without account.

~/test $ rclone link --expire 2m ossrc:$MY_OB/dir001/file.txt
http://bucket1.cos.gz.cos.abc.test.cn/dir001/file.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIDSeV1C1VdQsa4E3YiY3E3XgUx5sKRDelW%2F20240906%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240906T061304Z&X-Amz-Expires=120&X-Amz-SignedHeaders=host&X-Amz-Signature=264e8f9d16ed9de9ac57c3483b01b42f0f8ff3c2251d208ee9604cf519b7bee3

注意: 以下在腾讯云s3协议时未成功

rclone link remote:path/to/folder/ 不一定成功

rclone link --unlink remote:path/to/folder/ 不一定成功

挂载mount

通过mount挂载对象存储到本地,可通过alist将网盘转为webdav服务,然后通过mount将webdav挂载到本地目录

参考:blog.csdn.net/qq_43761203…

#rclone mount (远程的名称):/  需要挂载的路径
rclone mount Webdav:/ /home/remote

其他好玩的命令

dedupe:扫描目录中重复的文件

gendocs:导出帮助文件

completion:导出命令补全

hashsum、md5sum等

相似命令对

copy与copyto

copy与sync

sync与bisync

ls、lsd、lsf、lsl、lsjson

delete与deletefile

delete与purge

move与moveto

参考

rclone命令:rclone.org/commands/

rclone参数:rclone.org/flags/

rclone api:rclone.org/rc/