Rclone有许多可以控制其行为的选项(options)。
带有参数的选项可以通过两种方式来传递值:
--option=value
--option value
布尔值(true/false)与其他选项的行为略有不同,因为--boolean
将选项设置为true
,而没有标记将其设置为false
。当然也可以指定--boolean=false
或--boolean=true
。请注意,--boolean false
是无效的,这将解析为--boolean
,而false
将解析为rclone的其它命令行参数。
使用TIME
的选项使用go语言的时间解析器。持续时间字符串是可能带符号的十进制数字序列,每个序列都有可选的分数和一个单位后缀,例如“ 300ms”,“-1.5h”或“ 2h45m”。 有效时间单位为“ ns”,“ us”(或“ µs”),“ ms”,“ s”,“ m”,“ h”。
使用SIZE
的选项默认使用KB为单位。当然也可以使用以下后缀:
b
: bytesk
:kBytesM
:MBytesG
:GBytesT
:TBytesP
:PBytes
下面来说明以下具体的选项及其说明。
1. –backup-dir=DIR
在使用sync
、copy
或者move
时,将要被覆盖或者删除的文件按照他们的原始层次结构移动到此目录下。
如果--suffix
被设置了,那么将在移动的文件后面添加后缀。如果一个文件有相同的路径(后缀被添加了之后),会直接覆盖。
使用的远端(remote)必须支持服务端(server side)移动或者拷贝,必须使用同样的远端(remote)作为同步的目的地。备份目录不得与目标目录重叠。
示例
rclone sync /path/to/local remote:current --backup-dir remote:old
该命令将同步/path/to/local
到remote:current
,被更新或者删除的文件将被保存在remote:old
。
如果从脚本运行rclone,则可能要使用今天的日期作为传递给--backup-dir
的目录名称来存储旧文件,或者您可能希望将今天的日期传递给--suffix
。
可以看看--compare-dest
和--copy-dest
选项。
2. –bwlimit=BANDWIDTH_SPEC
这个选项控制带宽速率限制。限制可以通过两种方式指定:单个限制(single limit)或者时间表限制(timetable)。
- 单个限制(single limit)
单个限制(single limit)持续整个会话期间。要使用单个限制(single limit),需指定以kBytes/s
为单位的所需带宽,或者使用以b|k|M|G
为后缀。默认为0
,即不限制带宽。
例如:10MBytes/s
限制带宽,使用--bwlimit 10M
。 - 时间表(timetable)
同样可以指定一个限制的时间表,可以在某些指定时间应用某些限制。要指定一个时间表,需要格式化你的输入,如:WEEKDAY-HH:MM,BANDWIDTH WEEKDAY-HH:MM,BANDWIDTH…
。WEEKDAY
是可选元素。可使用完整的单词或者只使用3个首字母。HH:MM
范围是00:00
到23:59
。
一个避免白天工作时间内链路饱和的典型时间表示例如下:
--bwlimit "08:00,512 12:00,10M 13:00,512 18:00,30M 23:00,off
在这里例子中,每天早点八点(8am)的传输带宽设置为512kBytes/sec。中午,提高到10MBytes/sec,并在下午一点回退到512kBytes/sec。在下午6点,带宽限制设置为30MBytes/sec,并在下午11点时禁用时间表(满速),即,在晚上11点到早上8点之间不限制。
有WEEKDAY
时间表的示例:
--bwlimit "Mon-00:00,512 Fri-23:59,10M Sat-10:00,1M Sun-20:00,off"
即,周一的传输带宽设置为512kBytes/s,在周五结束(23:59)前,提升到10MBytes/s。在周六的十点开始设置为1Mbytes/s,从周天的20:00
开始无限制。
没有WEEKDAY
的时段延长到整个星期。示例:
--bwlimit "Mon-00:00,512 12:00,1M Sun-20:00,off"
等同于
--bwlimit "Mon-00:00,512 Mon-12:00,1M Tue-12:00,1M Wed-12:00,1M Thu-12:00,1M Fri-12:00,1M Sat-12:00,1M Sun-12:00,1M Sun-20:00,off"
带宽限制仅适用于数据传输。不适用于目录列表等。注意,单位是Bytes/s
而不是Bits/s
。通常连接(connections)以Bits/s
(除以8)为单位。例如,假设你有一个10Mbit/s
的连接,而你希望rclon
e使用它的一半-5Mbit/s
。这是5⁄8 = 0.625MByte/s,因此对rclone使用--bwlimit 0.625M
参数。
在Unix系统(Linux、MacOS,…)上,可以通过发送SIGUSR2
信号给rclone来切换带宽限制。这样可以消除长时间运行的rclone传输的限制,并在需要时快速将其恢复为--bwlimit
指定的值。
假如,仅仅只有一个rclone实例在运行,可以这样切换限制:
kill -SIGUSR2 $(pidof rclone)
如果你使用rclone rc
配置了rclone,可以动态改变带宽限制。
rclone rc core/bwlimit rate=1M
3. –buffer-size=SIZE
使用buffer size
可以加快文件传输。每个--transfer
会使用这么大的内容来进行缓冲。
当使用mount
或者cmount
时,每一个打开的文件描述符将使用这么大的内存来进行缓冲。设置为0
以禁用最小内存使用的缓冲。
注意,缓冲区申请的内存受
--use-mmap
标记的影响。
4. –checkers=N
要并行运行的检查程序的数量。校验器在同步期间对文件进行相等性检查。对于某些存储系统(例如S3,Swift,Dropbox),这可能会花费大量时间,因此它们可以并行运行。
默认是并行运行8个检查程序
5. -c, –checksum
通常,rclone关注文件的修改时间和大小来看是否相等。如果你设置了这个标记,rclone会检测hash和大小来判断文件是否相等。
当远端(remote)不支持设置修改时间并且需要更准备的同步而不仅仅只检查文件的大小时,是很有用的。
6. –compare-dest=DIR
当使用sync
、copy
、move
时,除了文件的目的地,DIR
目录也会被检查。如果与源相同的文件,将不会从源复制该文件。这对于复制仅自最后一次备份以来被改变的文件很有用。
在同步目的地时你必须使用相同的远端(remote)。比较的目录不得与目的目录重叠。
7. –config=CONFIG_FILE
指定本地的rclone配置文件。
正常情况下,配置文件在你的用户目录下~/.config/rclone/rclone.conf
。如果$XDG_CONFIG_HOME
被设置了,配置文件也许在$XDG_CONFIG_FILE/rclone/rclone.conf
。
如果在rclone可执行文件同一目录下存在文件rclone.conf
,那么该文件首选。这个文件必须手动创建来让rclone使用,永远不会被自动创建。
如果运行rclone config file
可以看到你的本地默认配置路径。
使用这个选项可以覆盖本地配置:
rclone --config=".myconfig" .config
8. –contimeout=TIME
设置连接超时时间。使用go
时间格式,像5s
为5秒,10m
为10分钟,或者3h30m
。
连接超时是rclone等待连接到远程对象存储系统的时间。默认1m
。
9. –copy-dest=DIR
当使用sync
、copy
、move
时,除了文件目的地,DIR
也会被检查。如果找到与源相同的文件,则说明该文件是服务器端从DIR复制到目标的文件。增量备份时很有用。
使用的远端(remote)必须支持服务器端拷贝并且,必须使用相同的远端作为同步(sync)目的地。比较目录不得与目的目录重叠。
10. –dedupe-mode MODE
运行重复数据删除命令的模式。
interactive
、skip
、first
、newest
、oldest
、rename
之一。默认interactive
。
有关这些选项的含义,请参见重复数据删除命令以获取更多信息。
11. –disable FEATURE,FEATURE,…
禁用以逗号分隔的可选功能列表。
示例, 禁用服务器端move
和copy
的使用。
--disable move,copy
查看可以被禁用的功能列表
--disable help
该标志对于调试和在特殊情况下很有用(如,Google云端硬盘将服务器端复制的总容量限制为每天100GB)。
12. -n,–dry-run
在没有永久更改的情况下进行试运行。使用这个来看rclone在不实际执行的情况下会做什么。设置用于删除目标中文件的sync
命令时很有用。
13. –expect-continue-timeout=TIME
如果请求具有Expect:100-continue
头,则此参数指定在完全写入请求头之后等待服务器的第一个响应头的时间。并非所有后端都支持使用此功能。
零表示没有超时,正文立即发送,而无需等待服务器批准。此时间不包括发送请求头的时间。
默认1s
。设置0
禁用。
14. –ignore-case-sync
使用此选项将让rclone在同步时忽略文件的大小写,因此即使现有文件名相同,即使大小写不同,文件也不会被复制/同步。
15. –ignore-checksum
正常情况下,rclone将检查传输文件的校验和是否匹配,如果不匹配,则会给出”corrupted on transfer”错误。
可以使用这个选项来跳过这个检查。仅当出现”corrupted on transfer”错误消息并确定要传输可能损坏的数据时,才使用它。
16. –ignore-existing
使用这个选项将让rclone无条件地跳过目标存在的所有文件,无论这些文件内容怎么样。
虽然通常情况下不建议使用此选项,但在文件由于加密而更改的情况下很有用。但是,在传输中断的情况下,它无法纠正部分传输。
17. –ignore-size
通常,rclone查看文件的修改时间和大小来看他们是否相等。如果你设置了这个标记,rclone将仅仅检查修改时间。如果--checksum
被设置了,将只检查校验和。
这将造成rclone在传输后跳过大小是否相同的操作。
这对于在OneDrive之间来回传输文件误报镜像大小很有用。
18. -I,–ignore-times
使用此选项将让rclone无条件上传所有文件,而不管目标上文件的状态如何。
通常,rclone会跳过所有具有相同修改时间且具有相同大小(或使用--checksum
具有相同校验和)的文件。
19. –immutable
将源文件和目标文件视为不可变的,不允许修改。
设置此选项后,将根据请求创建和删除文件,但是将永远不会更新现有文件。如果现有文件在源和目标之间不匹配,则rclone将给出错误Source and destination exist but do not match: immutable file modified
。
请注意,只有传输文件的命令(例如sync
,copy
,move
)会受到此行为的影响,并且不允许修改。文件仍可以显式删除(例如delete
,purge
)或隐式删除(例如sync
,move
)。如果希望避免删除和修改,请使用copy --immutable
。
这对于不可变或仅追加数据集(尤其是备份存档)的附加保护层很有用,因为修改意味着隐含损坏,因此不应传播.
20. –leave-root
在rmdirs期间,即使目录为空,它也不会删除根目录。
21. –log-file=FILE
不解释
22. –log-format LIST
不解释
23. –log-level LEVEL
不解释
24. –use-json-log
不解释
25. –low-level-retries NUMBER
不解释
26. –max-backlog=N
不解释
27. –max-delete=N
这告诉rclone不要删除超过N个文件。如果超出该限制,则将生成致命错误,并且rclone将停止正在进行的操作。
28. –max-depth=N
这将修改除purge
之外的所有命令的递归深度。
因此,如果你执行rclone --max-depth 1 ls remote:path
,将只能看到顶层目录的文件。使用--max-depth 2
意味着将在前两个目录级别看到所有文件,依此类推。
由于历史原因,lsd命令默认使用--max-depth 1
-你可以使用命令行标志来覆盖它。您可以使用此命令禁用递归(使用--max-depth 1
)。
请注意,如果将此选项与sync
和--delete-excluded
一起使用,则未递归通过的文件将被视为已排除,并将在目标位置删除。如果不确定会发生什么,请先使用–dry-run测试。
29. –max-duration=TIME
当Rclone在指定的时间内运行时,它将停止调度新的传输。默认为关闭。达到限制后,所有现有的传输都将完成。rclone不会因为达到转移限制错误退出。
30. –max-transfer=SIZE
Rclone达到指定大小的流量后将停止传输。默认为关闭。达到限制后,所有传输将立即停止。如果达到传输限制,Rclone将以退出代码8退出。
众所周知,Google的单账号每日最大750G,因此可以设置到达量之后退出。
rclone copy --max-transfer=750
31. –modify-window=TIME
在检查文件是否已被修改时,这是文件可以具有的最大允许时差,仍然被认为是等效的。除非被远程覆盖,否则默认值为1ns
。例如,OS X仅将修改时间存储到最接近的秒数,因此,如果您正在读写OS X文件系统,则默认为1s
。通过此命令行标志,您可以覆盖该计算的默认值。
32. –multi-thread-cutoff=SIZE
不解释
33. –multi-thread-streams=N
不解释
34. –no-check-dest
不解释
35. –no-gzip-encoding
不要设置Accept-Encoding: gzip
。这意味着rclone不会自动请求服务器提供压缩文件。如果将服务设置为使用Content-Encoding: gzip
返回文件,但上传了压缩文件,则很有用。
36. –no-traverse
--no-traverse
标志,控制当使用copy
或者move
命令时,是否遍历文件系统。--no-traverse
不兼容sync
命令,如果在使用sync
时加上该标志,将被忽略。
如果仅复制少量文件(或正在过滤大多数文件),并且目标处存在大量文件,通过--no-tranverse
可以禁止rclone列出目标文件来节省时间。
另外,如果需要复制大量的文件,而复制的文件中大多数文件没有更改,切不需要复制时,不应该使用--no-tranverse
。
37. –no-update-modtime
不解释
38. –order-by string
--order-by
标志控制在rclone sync
、rclone copy
以及rclone move
中处理积压文件的顺序。
按字符串排序是这样构造的。第一部分描述了被测的方面:
size
:通过文件的大小排序.name
:通过文件的完整路径排序.modtime
:通过文件的修改日期排序.
可以在修饰符后面加上逗号:
ascending
或者acs
: 排序,以便最小(或最旧)先被处理.descending
或者desc
:排序,以便最大(或最新)先被处理。
如果没有提供修饰符,则顺序为ascending
。
例如:
--order-by size,desc
:首先传送最大的文件.--odrder-by modtime,ascending
:首先传送最旧的文件.--order-by name
:首先通过按照字母顺序的路径传送文件。
如果没有使用--order-by
标志或者使用了空字符串,则使用扫描时的默认顺序。使用--checkers 1
时,大多数情况是按照字母顺序排列,如果使用默认--checkers 8
,那么是随机的。
局限性:
--order-by
标志不会对数据进行单独的传递。这意味着如果出现以下情况,它可能会以指定的顺序传输某些文件:
- 积压中没有文件,或者尚未完全扫描源
- 积压中有–max-backlog个文件。
Rclone将尽最大努力传输其拥有的最佳文件,因此在实践中这不会造成问题。将--order-by
看作是尽力而为的标志,而不是完美的排序
39. –password-command SpaceSepList
不解释
40. -P,–progress
通过这个标志,rclone在终端的一个静态块更新状态查看传输的实时情况。
任何日志消息都将滚动到静态块上方。日志消息将把静态块向下推,停留在终端的底部。通常,每500毫秒更新一次,但是可以通过--stats
标记来重写这个周期。
也可以通过--stats-one-line
标志来更简单的显示。
41. -q,–quiet
通常,rclone输出统计信息和完成消息。如果设置此标志,它将产生尽可能少的输出。
42. –retries int
默认为3次,如果多次失败,重试整个同步。
一些远端(remote)可能不可靠,一些重试可以帮助恢复由于错误而无法传输的文件。
使用--retries 1
来禁用重试。
43. –retries-sleep=TIME
设置通过--retries
指定的每一次重试之间的间隔,默认为0,意味着禁止。
44. –size-only
正常情况下,rclone会查看文件的修改时间和大小来确定它们是否相等。如果设置了这个标志,rclone将只检查大小。
这对于从Dropbox传输已由桌面同步客户端修改过的文件非常有用,该桌面同步客户端未以与rclone相同的方式设置修改时间的校验和。
45. –stats=TIME
传输数据的命令(sync
,copy
,copyto
,move
,moveto
)将定期打印数据传输统计信息以显示其进度。
这个标记设置间隔。默认值为1m
。使用0禁用。
如果您设置统计间隔,那么所有命令都可以显示统计。这在运行其他命令(例如check
或mount
)时很有用。
默认情况下,统计信息以INFO级别记录,这意味着它们不会以默认日志级别显示。使用--stats-log-level NOTICE
或-v
使其显示。
46. –stats-file-name-length integer
默认,--stats
输出将截断长度超过40个字符的文件名和路径。等同于--stats-file-name-length 40
.使用--stats-file-name-length 0
来禁止状态打印中文件名称的截断。
47. –stats-log-level string
--stats
输出显示的日志等级。 可能是DEBUG
、INFO
、NOTICE
或者ERROR
。 默认为INFO
。这表示默认的日志记录级别是NOTICE
,不会显示统计信息-如果希望显示出来,则使用--stats-log-level NOTICE
。