Rclone 入门指南
这是一篇发布于 864 天前的文章,部分信息可能已发生改变。
之前一直把各种 PT 下下来的东西丢到 GD 上保存,但是每次去手动备份 / 下载文件的时候都因为记不住命令,需要去翻一次剪贴板历史或者是看一次官方手册,刚好最近有时间,就写个 Rclone 的教程吧。
Rclone 配合 Screen 食用效果更佳哟,你可以去看看关于的 Screen 这篇文章。
关于 AutoRclone 和 SA 的创建你可以去看看我的 这篇文章。
安装 rclone
Windows
Debian 家族系统安装
因为有官方脚本的加持,所以 rclone 的安装非常非常简单,root 用户执行下面两行命令即可安装:
1 | # 安装 curl unzip |
Centos 家族系统安装
1 | yum update |
安装完成后你可以在终端中输入 rclone --version
来检查你的 rclone 是否已经安装。
1 | ~ # rclone --version |
当你看到类似上述结果的输出时,就证明你的 rclone 已经正确安装了。
配置 rclone
首先,输入rclone config
然后按照下面的注释去走就好。
1 | n) New remote |
至此,rclone 的配置已经完成,可以用来上传下载数据了,也可以挂载,像本地硬盘一样操作里面的数据。
挂载为本地磁盘
1 | cd /mnt && mkdir google_drive |
DriveName
为初始化配置填的name,Folder
为Google Drive里的文档夹名,LocalFolder
为服务器上的本地文档夹名。
参数
挂载参数
参数 | 说明 |
---|---|
–allow-non-empty | 允许在非空目录上挂载。 |
–allow-other | 允许访问其他用户。 |
–allow-root | 允许访问root用户。 |
–attr-timeout duration | 缓存文件/目录属性的时间。 (默认1秒) |
–daemon | 将mount作为守护程序运行(后台模式)。 |
–daemon-timeout duration | rclone响应内核的时间限制(并非所有操作系统都支持)。 |
–debug-fuse | 调试FUSE内部-需要-v。 |
–default-permissions | 使内核根据文件模式强制执行访问控制。 |
–dir-cache-time duration | 是时候缓存目录条目了。 (默认为5m0s) |
–dir-perms FileMode | 目录权限(默认0777) |
–file-perms FileMode | 文件权限(默认0666) |
–fuse-flag stringArray | 直接传递给libfuse / WinFsp的标志或参数。如果需要,请重复。 |
–gid uint32 | 覆盖文件系统设置的gid字段。 (默认为1000) |
-h, –help | 帮助安装 |
–max-read-ahead SizeSuffix | 可以为顺序读取预取的字节数。 (默认为128k) |
–no-checksum | 不要比较下载/下载时的校验和。 |
–no-modtime | 不要读/写修改时间(可以加快修改速度)。 |
–no-seek | 不允许在文件中查找。 |
-o, –option stringArray | libfuse / WinFsp的选项。如果需要,请重复。 |
–poll-interval duration | 等待两次轮询更改之间的时间。必须小于dir-cache-time。仅在受支持的遥控器上。设置为0禁用。 (默认为1m0s) |
–read-only | 挂载为只读。 |
–uid uint32 | 覆盖文件系统设置的uid字段。 (默认为1000) |
–umask int | 覆盖文件系统设置的权限位。 |
–vfs-cache-max-age duration | 缓存中对象的最长期限。 (默认为1h0m0s) |
–vfs-cache-max-size SizeSuffix | 缓存中对象的最大总大小。 (默认关闭) |
–vfs-cache-mode CacheMode | 缓存模式 关闭(off) |
–vfs-cache-poll-interval duration | 轮询缓存以查找陈旧对象的时间间隔。 (默认为1m0s) |
–vfs-read-chunk-size SizeSuffix | 逐块读取源对象。 (默认为128M) |
–vfs-read-chunk-size-limit SizeSuffix | 如果大于–vfs-read-chunk-size,则在每次读取块后将块大小加倍,直到达到限制。 “关闭”是无限的。 (默认关闭) |
–volname string | 设置卷名(并非所有操作系统都支持)。 |
–write-back-cache | 使内核缓冲区写入,然后再将其发送到rclone。否则,将使用直写式缓存。 |
全部的挂载参数可以参考官方的文档
全局参数
参数 | 说明 |
---|---|
–ask-password | 允许提示输入密码以进行加密配置。 (默认为true) |
–auto-confirm | 如果启用,请勿请求控制台确认。 |
–backup-dir string | 使备份成为基于DIR的层次结构。 |
–bind string | 绑定到传出连接的本地地址,IPv4,IPv6或名称。 |
–buffer-size SizeSuffix | 读取每个–transfer文件时的内存缓冲区大小。 (默认为16M) |
–bwlimit BwTimetable | 带宽限制(千字节/秒),或者使用后缀b |
–ca-cert string | 用于验证服务器的CA证书 |
–cache-dir string | 目录rclone将用于缓存。 (默认为”$HOME/.cache/rclone”) |
–checkers int | 要并行运行的检查程序数。 (默认为8) |
-c, –checksum | 根据校验和(如果有)和大小(而不是修改时间和大小)跳过 |
–client-cert string | 用于相互TLS身份验证的客户端SSL证书(PEM) |
–client-key string | 用于相互TLS身份验证的客户端SSL私钥(PEM) |
–compare-dest string | 使用DIR从服务器端复制文件。 |
–config string | 配置文件。 (默认为”$HOME/.config/rclone/rclone.conf”) |
–contimeout duration | 连接超时(默认为1m0s) |
–copy-dest string | 也将dest与DIR进行比较。 |
–cpuprofile string | 将cpu配置文件写入文件 |
–delete-after | 同步时,传输后删除目标位置上的文件(默认) |
–delete-before | 同步时,在传输之前删除目标文件 |
–delete-during | 同步时,在传输过程中删除文件 |
–delete-excluded | 从同步中删除目标上的文件 |
–disable string | 禁用以逗号分隔的功能列表。使用帮助查看列表。 |
-n, –dry-run | 在没有永久更改的情况下进行试运行 |
–dump DumpFlags | 要转储的项目列表:标头,正文,请求,响应,身份验证,过滤器,goroutines,openfiles |
–dump-bodies | 转储HTTP标头和正文-可能包含敏感信息 |
–dump-headers | 转储HTTP标头-可能包含敏感信息 |
–drive-server-side-across-configs | 允许服务器对拷 |
–exclude stringArray | 排除文件匹配模式 |
–exclude-from stringArray | 从文件中读取排除模式 |
–exclude-if-present string | 如果文件名存在,则排除目录 |
–fast-list | 如果可用,请使用递归列表。使用更多的内存,但更少的事务。 |
–files-from stringArray | 从文件中读取源文件名列表 |
-f, –filter stringArray | 添加文件过滤规则 |
–filter-from stringArray | 从文件中读取过滤模式 |
–ignore-case | 忽略过滤器中的大小写(不区分大小写) |
–ignore-case-sync | 同步时忽略大小写 |
–ignore-checksum | 跳过校验和的过帐副本检查。 |
–ignore-errors | 即使有I / O错误也要删除 |
–ignore-existing | 跳过目标上存在的所有文件 |
–ignore-size | 跳过使用mod-time或checksum时忽略大小。 |
-I, –ignore-times | 不要跳过匹配大小和时间的文件-传输所有文件 |
–immutable | 不要修改文件。如果现有文件已被修改,则失败。 |
–include stringArray | 包含文件匹配模式 |
–include-from stringArray | 从文件中读取包含模式 |
–log-file string | 将所有内容记录到该文件 |
–log-format string | 日志格式选项的逗号分隔列表(默认为“日期,时间”) |
–log-level string | 日志级别DEBUG |
–low-level-retries int | 低级重试次数。 (默认为10) |
–max-age Duration | 仅传输s或后缀ms |
–max-backlog int | 同步或检查积压的最大对象数。 (默认为10000) |
–max-delete int | 同步时,限制删除次数(默认为-1) |
–max-depth int | 如果设置,则将递归深度限制为此。 (默认为-1) |
–max-size SizeSuffix | 仅传输小于k或后缀b |
–max-stats-groups int | 要保留在内存中的统计信息组的最大数量。在最大的最旧的位置将被丢弃。 (默认为1000) |
–max-transfer SizeSuffix | 要传输的最大数据大小。 (默认关闭) |
–memprofile string | 将内存配置文件写入文件 |
–min-age Duration | 仅传输s或后缀ms |
–min-size SizeSuffix | 仅传输大于k或后缀b |
–modify-window duration | 认为最大时间差相同(默认为1ns) |
–multi-thread-cutoff SizeSuffix | 对于此大小以上的文件,请使用多线程下载。 (默认为250M) |
–multi-thread-streams int | 用于多线程下载的最大流数。 (默认为4) |
–no-check-certificate | 不要验证服务器SSL证书。不安全 |
–no-gzip-encoding | 不要设置Accept-Encoding:gzip。 |
–no-traverse | 不要遍历副本上的目标文件系统。 |
–no-update-modtime | 如果文件相同,请不要更新目标模块时间。 |
-P, –progress | 在传输过程中显示进度。 |
-q, –quiet | 打印尽可能少的东西 |
–rc | 启用远程控制服务器。 |
–rc-addr string | IP地址:端口或:端口绑定服务器。 (默认为“ localhost:5572”) |
–rc-allow-origin string | 设置允许的CORS原点。 |
–rc-baseurl string | URL的前缀-根目录留空。 |
–rc-cert string | SSL PEM密钥(证书和CA证书的串联) |
–rc-client-ca string | 客户证书颁发机构用来验证客户端 |
–rc-files string | 要在HTTP服务器上提供服务的本地文件的路径。 |
–rc-htpasswd string | htpasswd文件-如果未提供,则不进行身份验证 |
–rc-job-expire-duration duration | 使已完成的异步作业过期,且早于该值(默认值为1m0s) |
–rc-job-expire-interval duration | 检查过期的异步作业的时间间隔(默认为10s) |
–rc-key string | SSL PEM私钥 |
–rc-max-header-bytes int | 请求标头的最大大小(默认为4096) |
–rc-no-auth | 某些方法不需要身份验证。 |
–rc-pass string | 认证密码。 |
–rc-realm string | 身份验证领域(默认为“ rclone”) |
–rc-serve | 启用投放远程对象。 |
–rc-server-read-timeout duration | 服务器读取数据的超时时间(默认为1h0m0s) |
–rc-server-write-timeout duration | 服务器写入数据的超时时间(默认为1h0m0s) |
–rc-user string | 认证用户名。 |
–rc-web-fetch-url string | 用于获取webgui发行版的URL。 (默认为“ https://api.github.com/repos/rclone/rclone-webui-react/releases/latest”) |
–rc-web-gui | 在本地主机上启动WebGUI |
–rc-web-gui-update | 更新/强制更新为Web GUI的最新版本 |
–retries int | 如果操作失败,请重试此操作多次(默认值为3) |
–retries-sleep duration | 重试操作失败之间的间隔,例如500ms,60s,5m。 (0禁用) |
–size-only | 仅基于大小跳过,不基于调制时间或校验和 |
–stats duration | 打印状态之间的间隔,例如500ms,60s,5m。 (0禁用)(默认1m0s) |
–stats-file-name-length int | 统计资料中的最大档案名称长度。 0为无限制(默认为45) |
–stats-log-level string | 显示–stats输出的日志级别DEBUG |
–stats-one-line | 使统计数据适合一行。 |
–stats-one-line-date | 启用–stats-one-line并添加当前日期/时间前缀。 |
–stats-one-line-date-format string | 启用–stats-one-line-date并使用自定义格式的日期。将日期字符串括在双引号(“)中。请参见https://golang.org/pkg/time/#Time.Format |
–stats-unit string | 以“位”或“字节” /秒(默认“字节”)的形式在统计数据中显示数据速率 |
–streaming-upload-cutoff SizeSuffix | 如果文件大小未知,则切换到分块上传的截止时间。上载到截止时间或文件结束时开始。 (默认为100k) |
–suffix string | 添加到已更改文件的后缀。 |
–suffix-keep-extension | 使用–suffix时保留扩展名。 |
–syslog | 使用Syslog进行记录 |
–syslog-facility string | syslog的功能,例如KERN,USER,…(默认为“ DAEMON”) |
–timeout duration | IO空闲超时(默认为5m0s) |
–tpslimit float | 将每秒HTTP事务数限制为此。 |
–tpslimit-burst int | –tpslimit的最大事务爆发次数。 (默认为1) |
–track-renames | 同步时,请重命名跟踪文件并在可能的情况下进行服务器端移动 |
–transfers int | 多线程传输(要并行运行的文件传输数。) (默认为4) |
-u, –update | 跳过目标上较新的文件。 |
–use-cookies | 启用会话cookiejar。 |
–use-json-log | 使用json日志格式。 |
–use-mmap | 使用mmap分配器(请参阅文档)。 |
–use-server-modtime | 使用服务器修改时间而不是对象元数据 |
–user-agent string | 将用户代理设置为指定的字符串。默认值为rclone /版本(默认为”rclone/v1.49.5”) |
-v, –verbose count | 打印更多的东西(重复更多) |
全部的参数可以参考官方文档
使用
1 | rclone config - 以交互式的形式添加rclone的配置,配置保存在.rclone.conf文件中。 |
rclone copy
这个可能是是使用最频繁的命令了,可以把文件从一个地拷贝到另外一个地方,且会跳过已复制完成的
1 | rclone copy source:sourcepath dest:destpsth |
但是上面这条命令并不会显示进度,所以我更多的是使用下面这条命令来进行备份
1 | rclone copy -P source:sourcepath dest:destpsth |
如果要增量备份且限制最大上行速度,可以使用下面这条命令
1 | rclone copy -P --size-only --bwlimit 20M source:sourcepath dest:destpsth |
同时,rclone 默认为 4 线程,如果想改变线程数的话,加上
--transfers 8
即可。
1 | rclone copy -P --size-only --bwlimit 20M source:sourcepath dest:destpsth --transfers 8 |
- 注:
rclone copy
复制总是指定路径下的数据;而不是当前目录。
rclone sync
同步数据
1 | rclone sync source:path dest:path |
- 注:
- 同步数据时,可能会删除目的地址的数据;建议先使用–dry-run标志来检查要复制、删除的数据。
- 同步数据出错时,不会删除任何目的地址的数据。
rclone sync
同步的始终是path目录下的数据,而不是path目录。(空目录将不会被同步)
rclone move
移动数据
1 | rclone move source:path dest:path |
- 注:
- 同步数据时,可能会删除目的地址的数据;建议先使用–dry-run标志来检查要复制、删除的数据。
rclone purge
删除一个目录下所有数据
1 | rclone purge remote:path |
- 注:
- 此命令,
将会删除path目录下所有数据,请慎重使用!
- 删除path目录下部分数据,请使用
rclone delete
命令
rclone mkdir & rclone rmdir
1 | rclone mkdir remote:path |
1 | rclone rmdir remote:path |
- 注:
- rmdir 只能删除空目录,删除非空目录请使用
rclone purge
rclone ckeck
检查源和目标地址文件是否匹配。命令格式如下:
1 | rclone check source:path dest:path |
这条命令其实可以加上--size-only
,这样相较于使用 checksum 校验要快很多很多。
rclone ls
列出指定path下,所有的文件以及文件大小和路径。命令格式如下:
1 | rclone ls remote:path |
rclone lsd
列出指定path下,所有目录、容器、桶。命令格式如下:
1 | rclone lsd remote:path |
rclone delete
删除指定目录的内容。命令格式如下:
1 | rclone delete remote:path |
- 注:
- 不同于
rclone purge
、rclone delete
可使用include/exclude
过滤器选择删除文件内容。
1 | # 先检查哪些文件将被删除 |
rclone size
获取指定path下所有数据文件的总大小。命令格式如下:
1 | rclone size remote:path |