下载安装
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 DumpFlags | List 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服务,通过浏览器查看目录的内容,只可查看命令启动时指定的目录
$ 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挂载到本地目录
#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/