rclone文档
Rclone 是一款管理云存储文件的命令行程序。 下载](/downloads/) 和安装 之后,请继续 了解如何使用它: 初始配置、 基本语法是什么样子,描述了各种子命令 各种 子命令、各种 选项、 等等。
配置
首先,你需要配置 rclone。 由于对象存储系统
有相当复杂的身份验证,这些都保存在配置文件中。
(请参阅 --config
如何找到配置文件并选择其位置)。
文件并选择其位置)。
创建配置文件的最简单方法是运行 rclone,并在配置文件中加入 选项运行 rclone:
rclone config
请参阅以下详细说明
- 1Fichier
- Akamai Netstorage
- Alias
- Amazon S3
- Backblaze B2
- Box
- Chunker - transparently splits large files for other remotes
- Citrix ShareFile
- Compress
- Cloudinary
- Combine
- Crypt - to encrypt other remotes
- DigitalOcean Spaces
- Digi Storage
- Dropbox
- Enterprise File Fabric
- Files.com
- FTP
- Gofile
- Google Cloud Storage
- Google Drive
- Google Photos
- Hasher - to handle checksums for other remotes
- HDFS
- Hetzner Storage Box
- HiDrive
- HTTP
- iCloud Drive
- Internet Archive
- Jottacloud
- Koofr
- Linkbox
- Mail.ru Cloud
- Mega
- Memory
- Microsoft Azure Blob Storage
- Microsoft Azure Files Storage
- Microsoft OneDrive
- OpenStack Swift / Rackspace Cloudfiles / Blomp Cloud Storage / Memset Memstore
- OpenDrive
- Oracle Object Storage
- Pcloud
- PikPak
- Pixeldrain
- premiumize.me
- put.io
- Proton Drive
- QingStor
- Quatrix by Maytech
- rsync.net
- Seafile
- SFTP
- Sia
- SMB
- Storj
- SugarSync
- Union
- Uloz.to
- Uptobox
- WebDAV
- Yandex Disk
- Zoho WorkDrive
- The local filesystem
基础语法
rclone 用于将一个存储系统中的目录树同步到另一个存储系统。
其语法如下:
rclone 子命令 [选项] <参数> <参数...>
子命令
是 rclone 所需执行的操作(例如 sync
、copy
、ls
)。
选项
可以是单个字母标志(例如 -v
)、一组单个字母标志(例如 -Pv
)或长标志(例如 --progress
)。选项并非必需。选项可以放在 子命令
之后、参数之间或命令末尾,但只有全局选项可以放在 子命令
之前。--
选项之后的任何内容都不会被解释为选项,因此如果需要添加以 -
开头的参数,请先单独使用 --
,例如:
rclone lsf -- -以破折号开头的目录
参数
通常是文件路径或 rclone 远程存储,例如 /path/to/file
或 remote:path/to/file
,但也可以是其他内容,具体取决于 子命令
的帮助说明。
源路径和目标路径由你在配置文件中为存储系统指定的名称以及子路径确定,例如,“drive:myfolder” 表示 Google 云端硬盘中的 “myfolder”。
你可以在配置文件中定义任意数量的存储路径。
在学习使用 rclone 时,请使用 --interactive
/-i
标志,以避免意外的数据丢失。
子命令
rclone 使用子命令系统。例如:
rclone ls remote:path # 列出远程存储的内容
rclone copy /local/path remote:path # 将本地路径下的内容复制到远程存储
rclone sync --interactive /local/path remote:path # 将本地路径下的内容同步到远程存储
以下是 rclone 的主要命令,按使用频率排序:
- rclone config - 进入交互式配置会话。
- rclone copy - 将文件从源复制到目标,跳过已复制的文件。
- rclone sync - 使源和目标完全相同,仅修改目标。
- rclone bisync - 双向同步 两个路径。
- rclone move - 将文件从源移动到目标。
- rclone delete - 删除路径下的内容。
- rclone purge - 删除路径及其所有内容。
- rclone mkdir - 如果路径不存在,则创建该路径。
- rclone rmdir - 删除路径。
- rclone rmdirs - 删除路径下的所有空目录。
- rclone check - 检查源和目标中的文件是否匹配。
- rclone ls - 列出路径下所有对象的大小和路径。
- rclone lsd - 列出路径下的所有目录/容器/存储桶。
- rclone lsl - 列出路径下所有对象的大小、修改时间和路径。
- rclone md5sum - 为路径下的所有对象生成 md5 校验和文件。
- rclone sha1sum - 为路径下的所有对象生成 sha1 校验和文件。
- rclone size - 返回远程存储路径下的总大小和对象数量。
- rclone version - 显示版本号。
- rclone cleanup - 如有可能,清理远程存储。
- rclone dedupe - 交互式查找重复文件并删除/重命名它们。
- rclone authorize - 远程授权。
- rclone cat - 连接任意文件并将其发送到标准输出。
- rclone copyto - 将文件从源复制到目标,跳过已复制的文件。
- rclone completion - 输出 rclone 的 shell 自动补全脚本。
- rclone gendocs - 将 rclone 的 Markdown 文档输出到指定目录。
- rclone listremotes - 列出配置文件中的所有远程存储。
- rclone mount - 将远程存储挂载为挂载点。
- rclone moveto - 将文件或目录从源移动到目标。
- rclone obscure - 对 rclone.conf 中使用的密码进行加密。
- rclone cryptcheck - 检查加密远程存储的完整性。
- rclone about - 获取远程存储的配额信息。
完整列表请参阅 命令索引。
复制单个文件
rclone 通常会同步或复制目录。 不过,如果源 远程指向一个文件,rclone 将直接复制该文件。 目标远程 目标远程地址必须指向一个目录。 错误 “Failed to create file system for “remote:file”: is a file not a directory 目录 “的错误信息。
例如,假设你有一个远程文件,其中有一个名为 test.jpg “的远程文件,那么你可以像这样复制该文件
rclone copy remote:test.jpg /tmp/download
test.jpg “文件将被放在”/tmp/download “中。
这相当于指定
rclone copy --files-from /tmp/files remote: /tmp/download
其中 /tmp/files
包含一行内容
test.jpg
复制单个文件时,建议使用 copy
,而不是 sync
。
它们的效果基本相同,但 copy
使用的时间要少得多
内存。
远程路径的语法
传递给 rclone 命令的路径语法如下。
/path/to/dir
这指的是本地文件系统。
在 Windows 系统中,仅在本地路径中可以使用 \
代替 /
,非本地路径必须使用 /
。有关 Windows 特定路径的更多信息,请参阅 本地文件系统 文档。
这些路径不必以 /
开头 - 如果不以 /
开头,则它们将相对于当前目录。
remote:path/to/dir
这指的是配置文件中定义的 remote:
上的目录 path/to/dir
(通过 rclone config
进行配置)。
remote:/path/to/dir
在大多数后端中,这与 remote:path/to/dir
指向相同的目录,建议使用后一种格式。在极少数远程存储(FTP、SFTP、企业版 Dropbox)中,这将指向不同的目录。在这些存储中,不以 /
开头的路径将指向“主”目录,而以 /
开头的路径将指向根目录。
:backend:path/to/dir
这是一种动态创建远程存储的高级形式。backend
应该是后端的名称或前缀(配置文件中的 type
),并且后端的所有配置都应该在命令行中提供(或通过环境变量)。
以下是一些示例:
rclone lsd --http-url https://pub.rclone.org :http:
列出 https://pub.rclone.org/
根目录下的所有目录。
rclone lsf --http-url https://example.com :http:path/to/dir
列出 https://example.com/path/to/dir/
中的文件和目录。
rclone copy --http-url https://example.com :http:path/to/dir /tmp/dir
将 https://example.com/path/to/dir
中的文件和目录复制到 /tmp/dir
。
rclone copy --sftp-host example.com :sftp:path/to/dir /tmp/dir
使用 SFTP 将 example.com
上相对目录 path/to/dir
中的文件和目录复制到 /tmp/dir
。
连接字符串
上述示例也可以使用连接字符串语法编写,因此可以将参数作为远程存储规范的一部分提供,而不是作为命令行参数。例如,--http-url https://pub.rclone.org
可以作为一种连接字符串提供。
rclone lsd ":http,url='https://pub.rclone.org':"
rclone lsf ":http,url='https://example.com':path/to/dir"
rclone copy ":http,url='https://example.com':path/to/dir" /tmp/dir
rclone copy :sftp,host=example.com:path/to/dir /tmp/dir
这些语法既可以用于修改现有远程存储,也可以用于使用动态语法创建新的远程存储。此示例等效于为远程存储 gdrive:
添加 --drive-shared-with-me
参数。
rclone lsf "gdrive,shared_with_me:path/to/dir"
使用连接字符串语法的主要优点是,它仅适用于指定的远程存储,而不是命令行中所有该类型的远程存储。常见的误解是尝试将 Google Drive 上共享的文件复制到普通驱动器,以下命令 无法正常工作,因为 --drive-shared-with-me
标志会同时应用于源和目标。
rclone copy --drive-shared-with-me gdrive:shared-file.txt gdrive:
然而,使用连接字符串语法,这个命令可以正常工作。
rclone copy "gdrive,shared_with_me:shared-file.txt" gdrive:
请注意,连接字符串仅影响直接后端的选项。例如,如果 gdriveCrypt
是基于 gdrive
的加密后端,那么以下命令 不会按预期工作,因为 shared_with_me
会被加密后端忽略:
rclone copy "gdriveCrypt,shared_with_me:shared-file.txt" gdriveCrypt:
连接字符串的语法如下
remote,parameter=value,parameter2=value2:path/to/dir
:backend,parameter=value,parameter2=value2:path/to/dir
如果 parameter
包含 :
或 ,
,则必须将其放在引号 "
或 '
中,例如
remote,parameter="colon:value",parameter2="comma,value":path/to/dir
:backend,parameter='colon:value',parameter2='comma,value':path/to/dir
如果带引号的值需要包含该引号,则应将其加倍,例如
remote,parameter="with""quote",parameter2='with''quote':path/to/dir
这将使 parameter
的值为 with"quote
,parameter2
的值为 with'quote
。
如果省略 =parameter
,rclone 将替换为 =true
,这对于标志非常有用。例如,要使用环境中配置的 S3,可以使用:
rclone lsd :s3,env_auth:
这等效于
rclone lsd :s3,env_auth=true:
请注意,在命令行中,可能需要用 "
或 '
包围这些连接字符串,以防止 shell 解释其中的任何特殊字符。
如果你是 shell 高手,你会知道哪些字符串是可以的,哪些是不可以的,但如果你不确定,请将它们用 "
括起来,并使用 '
作为内部引号。这种语法在所有操作系统上都适用。
rclone copy ":http,url='https://example.com':path/to/dir" /tmp/dir
在 Linux/macOS 系统中,shell 中的 "
字符串内仍会解释一些字符(特别是 \
、$
和 "
),因此如果字符串包含这些字符,可以交换 "
和 '
的角色。(这种语法在 Windows 上不适用。)
rclone copy ':http,url="https://example.com":path/to/dir' /tmp/dir
连接字符串、配置和日志记录
如果你通过命令行标志、环境变量或连接字符串为后端提供额外的配置,rclone 将根据配置的哈希值在远程存储的名称后添加一个后缀,例如
rclone -vv lsf --s3-chunk-size 20M s3:
日志消息如下
DEBUG : s3: detected overridden config - adding "{Srj1p}" suffix to name
这样,rclone 在缓存后端时可以区分修改后的远程存储和未修改的远程存储。
这应该只在日志中可见。
这意味着动态后端,例如
rclone -vv lsf :s3,env_auth:
将有自己的名称
DEBUG : :s3: detected overridden config - adding "{YTu53}" suffix to name
有效的远程存储名称
远程存储名称区分大小写,并且必须遵守以下规则:
- 可以包含数字、字母、
_
、-
、.
、+
、@
和空格。 - 不能以
-
或空格开头。 - 不能以空格结尾。
从 rclone 1.61 版本开始,允许使用任何 Unicode 数字和字母,而在旧版本中,仅限于普通 ASCII 字符(0 - 9、A - Z、a - z)。如果你在不同的 shell 中使用相同的 rclone 配置,这些 shell 可能配置了不同的字符编码,那么你必须谨慎使用在所有 shell 中都可以输入的字符。这在 Windows 上是一个主要问题,因为控制台传统上使用非 Unicode 字符集 - 由所谓的“代码页”定义。
不要在 Windows 上使用单字符名称,因为这会与 Windows 驱动器名称产生歧义,例如:名为 C
的远程存储与 C
驱动器无法区分。rclone 总是会假设单字母名称指的是驱动器。
引号与 shell
当你在计算机上输入命令时,你使用的是所谓的命令行 shell。它会以特定于操作系统的方式解释各种字符。
以下是一些可能对不熟悉 shell 规则的用户有帮助的注意事项:
Linux / OSX
如果你的名称中包含空格或 shell 元字符(例如 *
、?
、$
、'
、"
等),则必须将它们用引号引起来。默认情况下使用单引号 '
。
rclone copy 'Important files?' remote:backup
如果你想输入 '
,则需要使用 "
,例如:
rclone copy "O'Reilly Reviews" remote:backup
引用元字符的规则很复杂,如果你想了解完整的细节,你需要查阅你的 shell 的手册页。
Windows
如果你的名称中包含空格,你需要将它们放在 "
中,例如:
rclone copy "E:\folder name\folder name\folder name" remote:backup
如果你使用的是根目录本身,则不要加引号(有关原因,请参阅 #464),例如:
rclone copy E:\ remote:backup
复制名称中包含 :
的文件或目录
rclone 使用 :
来标记远程名称。然而,在非 Windows 操作系统中,这是一个有效的文件名组成部分。远程名称解析器只会在第一个 /
之前搜索 :
,因此如果你需要对这样的文件或目录进行操作,请使用以 /
开头的完整路径,或者使用 ./
作为当前目录前缀。
因此,要将名为 sync:me
的目录同步到名为 remote:
的远程存储,请使用:
rclone sync --interactive ./sync:me remote:path
或者
rclone sync --interactive /full/path/to/sync:me remote:path
服务器端复制
大多数远程存储(但不是全部 - 请参阅 概述)支持服务器端复制。
这意味着如果你想将一个文件夹复制到另一个文件夹,rclone 不会下载所有文件并重新上传;它会指示服务器在原地复制它们。
例如
rclone copy s3:oldbucket s3:newbucket
将 oldbucket
的内容复制到 newbucket
,而无需下载和重新上传。
不支持服务器端复制的远程存储在这种情况下 会 下载并重新上传文件。
服务器端复制与 sync
和 copy
命令一起使用,在使用 -v
标志时会在日志中识别出来。如果远程存储不直接支持服务器端移动,move
命令也可能会使用它们。这是通过先进行服务器端复制,然后再删除来完成的,这比下载和重新上传要快得多。
只有当远程名称相同时,才会尝试进行服务器端复制。
在编写脚本时,可以使用此功能高效地进行旧备份,例如:
rclone sync --interactive remote:current-backup remote:previous-backup
rclone sync --interactive /path/to/files remote:current-backup
元数据支持
元数据是关于文件(或目录)的数据,而非文件(或目录)的内容。通常情况下,rclone 仅会在可能的情况下保留修改时间和内容(MIME)类型。
当使用 --metadata
或 -M
标志时,rclone 支持保留文件和目录的所有可用元数据。
具体支持哪些元数据以及这种支持意味着什么,取决于所使用的后端。支持元数据的后端在其文档中有专门的元数据部分,并在功能表中列出(例如 本地、S3)。
有些后端不支持元数据,有些仅支持文件的元数据,而有些则同时支持文件和目录的元数据。
rclone 仅支持一次性的元数据同步。这意味着,只有当源对象发生更改且需要重新上传时,元数据才会从源对象同步到目标对象。如果源对象的元数据随后发生了变化,但对象本身未改变,那么这些变化不会同步到目标对象。这与 rclone 在不使用 --metadata
标志时同步 Content-Type
的方式一致。
在从本地同步到本地时使用 --metadata
标志,将保留文件属性,如文件模式、所有者、扩展属性(非 Windows 系统)。
请注意,可以在对象首次上传时使用 --metadata-set key=value
标志为对象添加任意元数据。该标志可以根据需要重复使用。
可以使用 –metadata-mapper 标志指定一个程序的名称,该程序可在元数据从源复制到目标时对其进行转换。
rclone 在执行服务器端 Move
和服务器端 Copy
操作时支持 --metadata-set
和 --metadata-mapper
,但在执行服务器端 DirMove
(重命名目录)操作时不支持,因为这需要递归遍历目录。请注意,你可以使用 --disable DirMove
禁用 DirMove
,rclone 会退回到对每个单独的对象使用 Move
,此时 --metadata-set
和 --metadata-mapper
是支持的。
元数据类型
元数据分为两种类型:系统元数据和用户元数据。
后端自身使用的元数据称为系统元数据。例如,在本地后端,系统元数据 uid
在基于 Unix 的平台上会存储文件的用户 ID。
任意定义的元数据称为用户元数据,可以根据需要进行设置。
当对象从一个后端复制到另一个后端时,如果提供了系统元数据,它们会尝试对其进行解释。随着对象在不同后端之间复制,元数据可能会从用户元数据转变为系统元数据。例如,从 S3 复制一个对象会设置 content-type
元数据。在理解此元数据的后端(如 azureblob
)中,这将成为对象的 Content-Type
。在不理解此元数据的后端(如 local
后端)中,这将成为用户元数据。然而,如果将本地对象复制回 S3,Content-Type
将被正确设置。
元数据框架
rclone 实现了一个元数据框架,该框架可以从对象中读取元数据,并在对象上传时(且仅在上传时)将其写入对象。
这些元数据以字典形式存储,键和值均为字符串。
键的名称有一些限制(未来可能会进一步明确)。
- 必须为小写
- 可以包含
a-z
、0-9
、.
、-
或_
- 长度取决于后端
每个后端都可以提供其理解的系统元数据。有些后端还可以存储任意的用户元数据。
在可能的情况下,键名会进行标准化,因此,例如,可以将对象的元数据从 S3 复制到 Azure Blob,并且元数据会被适当转换。
有些后端对元数据的大小有限制,如果超过这些限制,rclone 在上传时会给出错误提示。
元数据保留
实现的目标是:
- 尽可能保留元数据
- 尽可能解释元数据
目标 1 的结果是,你可以将 S3 对象无损地复制到本地磁盘,然后再复制回 S3。同样,你可以将带有文件属性和扩展属性的本地文件从本地磁盘无损地复制到 S3,再复制回来。
目标 2 的结果是,你可以将带有元数据的 S3 对象复制到 Azure Blob(例如),并且元数据也会出现在 Azure Blob 对象上。
标准系统元数据
以下是一个标准系统元数据的表格,如果适用,后端可以实现这些元数据。
键 | 描述 | 示例 |
---|---|---|
mode | 文件类型和模式:八进制,Unix 风格 | 0100664 |
uid | 所有者的用户 ID:十进制数 | 500 |
gid | 所有者的组 ID:十进制数 | 500 |
rdev | 设备 ID(如果是特殊文件) => 十六进制 | 0 |
atime | 最后访问时间:RFC 3339 格式 | 2006-01-02T15:04:05.999999999Z07:00 |
mtime | 最后修改时间:RFC 3339 格式 | 2006-01-02T15:04:05.999999999Z07:00 |
btime | 文件创建(诞生)时间:RFC 3339 格式 | 2006-01-02T15:04:05.999999999Z07:00 |
utime | 文件上传时间:RFC 3339 格式 | 2006-01-02T15:04:05.999999999Z07:00 |
cache-control | 缓存控制头 | no-cache |
content-disposition | 内容处置头 | inline |
content-encoding | 内容编码头 | gzip |
content-language | 内容语言头 | en-US |
content-type | 内容类型头 | text/plain |
如果在元数据中提供了 mtime
和 content-type
元数据键,它们将优先于读取源对象的 Content-Type
或修改时间。
哈希值不包含在系统元数据中,因为已经有明确的方法来读取它们。
选项
Rclone 有许多选项来控制其行为。
接受参数的选项可以通过两种方式传递值,即 --option=value
或 --option value
。然而,布尔型(真/假)选项与其他选项的行为略有不同,--boolean
会将选项设置为 true
,而不使用该标志则将其设置为 false
。也可以指定 --boolean=false
或 --boolean=true
。请注意,--boolean false
是无效的,因为这会被解析为 --boolean
,而 false
会被解析为 rclone 的额外命令行参数。
文档中提到接受 stringArray
参数的选项可以接受多个值。要传递多个值,请重复该选项;例如:--include value1 --include value2
。
时间或时长选项
时间(TIME)或时长(DURATION)选项可以指定为时长字符串或时间字符串。
时长字符串是一个可能带符号的十进制数字序列,每个数字都可以有可选的小数部分和单位后缀,例如 “300ms”、"-1.5h” 或 “2h45m”。默认单位是秒,或者以下缩写也是有效的:
ms
- 毫秒s
- 秒m
- 分钟h
- 小时d
- 天w
- 周M
- 月y
- 年
这些选项也可以指定为以下格式的绝对时间:
- RFC3339 - 例如
2006-01-02T15:04:05Z
或2006-01-02T15:04:05+07:00
- ISO8601 日期和时间,本地时区 -
2006-01-02T15:04:05
- ISO8601 日期和时间,本地时区 -
2006-01-02 15:04:05
- ISO8601 日期 -
2006-01-02
(YYYY-MM-DD)
大小选项
使用大小(SIZE)的选项默认使用 KiB(1024 字节的倍数)。然而,可以使用后缀 B
表示字节、K
表示 KiB、M
表示 MiB、G
表示 GiB、T
表示 TiB 和 P
表示 PiB。这些是二进制单位,例如分别为 1、2 的 10 次方、2 的 20 次方、2 的 30 次方。
–backup-dir=DIR
在使用 sync
、copy
或 move
命令时,任何会被覆盖或删除的文件都会以其原始层级结构移动到该目录中。
如果设置了 --suffix
,则移动的文件将添加该后缀。如果在 DIR 中有相同路径(添加后缀后)的文件,则会被覆盖。
使用的远程存储必须支持服务器端移动或复制,并且必须使用与同步目标相同的远程存储。备份目录不能与目标目录重叠,除非通过过滤规则将其排除。
例如
rclone sync --interactive /path/to/local remote:current --backup-dir remote:old
将把 /path/to/local
同步到 remote:current
,但任何会被更新或删除的文件将存储在 remote:old
中。
如果从脚本中运行 rclone,你可能想使用今天的日期作为传递给 --backup-dir
的目录名来存储旧文件,或者你可能想传递带有今天日期的 --suffix
。
请参阅 --compare-dest
和 --copy-dest
。
–bind string
用于传出连接的本地绑定地址。这可以是 IPv4 地址(1.2.3.4)、IPv6 地址(1234::789A)或主机名。如果主机名无法解析或解析为多个 IP 地址,将给出错误。
你可以使用 --bind 0.0.0.0
强制 rclone 使用 IPv4 地址,使用 --bind ::0
强制 rclone 使用 IPv6 地址。
–bwlimit=BANDWIDTH_SPEC
此选项控制带宽限制。例如
--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。任何一个限制都可以设置为 “off”,表示不限制,因此只限制上传带宽可以使用
--bwlimit 10M:off
这将把上传带宽限制为 10 MiB/s,但下载带宽将不受限制。
如上所述指定时,带宽限制将在 rclone 二进制文件运行期间生效。
也可以指定一个“时间表”限制,这将导致在特定时间应用特定的限制。要指定时间表,请将条目格式化为 WEEKDAY-HH:MM,BANDWIDTH WEEKDAY-HH:MM,BANDWIDTH...
,其中:WEEKDAY
是可选元素。
BANDWIDTH
可以是单个数字,例如100k
,也可以是上传:下载的一对数字,例如10M:1M
。WEEKDAY
可以写成完整的单词,也可以只使用前 3 个字符。它是可选的。HH:MM
是从 00:00 到 23:59 的小时数。
条目可以用空格或分号分隔。
注意:在像 Docker 这样的环境中,可以使用分号作为分隔符来避免解析问题。
一个典型的时间表示例,用于避免在白天工作时间网络饱和,可以是:
使用空格作为分隔符:
--bwlimit "08:00,512k 12:00,10M 13:00,512k 18:00,30M 23:00,off"
使用分号作为分隔符:
--bwlimit "08:00,512k;12:00,10M;13:00,512k;18:00,30M;23:00,off"
在这些示例中,每天上午 8 点传输带宽将设置为 512 KiB/s。中午,它将提高到 10 MiB/s,下午 1 点又降回到 512 KiB/秒。下午 6 点,带宽限制将设置为 30 MiB/s,晚上 11 点将完全禁用(全速)。晚上 11 点到上午 8 点之间的任何时间将保持无限制。
带有 WEEKDAY
的时间表示例可以是:
使用空格作为分隔符:
--bwlimit "Mon-00:00,512 Fri-23:59,10M Sat-10:00,1M Sun-20:00,off"
使用分号作为分隔符:
--bwlimit "Mon-00:00,512;Fri-23:59,10M;Sat-10:00,1M;Sun-20:00,off"
这意味着,周一传输带宽将设置为 512 KiB/s。在周五结束前将提高到 10 MiB/s。周六 10:00 将设置为 1 MiB/s。周日 20:00 之后将无限制。
没有 WEEKDAY
的时间段将扩展到整个星期。所以这个例子:
--bwlimit "Mon-00:00,512 12:00,1M Sun-20:00,off"
等同于:
--bwlimit "Mon-00:00,512Mon-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"
带宽限制适用于所有后端的数据传输。对于大多数后端,目录列表带宽也包括在内(非 HTTP 后端、ftp
、sftp
和 storj
除外)。
请注意,单位是 字节/秒,而不是 比特/秒。通常连接速度以比特/秒为单位测量 - 要进行转换,请除以 8。例如,假设你有一个 10 Mbit/s 的连接,你希望 rclone 使用其中的一半 - 5 Mbit/s。这是 5/8 = 0.625 MiB/s,所以你将为 rclone 使用 --bwlimit 0.625M
参数。
在 Unix 系统(Linux、macOS 等)上,可以通过向 rclone 发送 SIGUSR2
信号来切换带宽限制器。这允许在需要时快速移除长时间运行的 rclone 传输的限制,并将其恢复到 --bwlimit
指定的值。假设只有一个 rclone 实例在运行,你可以像这样切换限制器:
kill -SIGUSR2 $(pidof rclone)
如果你使用 远程控制 配置 rclone,则可以动态更改带宽限制:
rclone rc core/bwlimit rate=1M
–bwlimit-file=BANDWIDTH_SPEC
此选项控制每个文件的带宽限制。有关选项,请参阅 --bwlimit
标志。
例如,使用此选项可确保没有传输速度超过 1 MiB/s
--bwlimit-file 1M
这可以与 --bwlimit
结合使用。
请注意,如果提供了时间表,文件将使用传输开始时生效的时间表。
–buffer-size=SIZE
使用此大小的缓冲区来加速文件传输。每个 --transfer
将使用这么多内存进行缓冲。
在使用 mount
或 cmount
时,每个打开的文件描述符将使用这么多内存进行缓冲。
有关更多详细信息,请参阅 挂载 文档。
设置为 0
可禁用缓冲,以实现最小的内存使用。
请注意,缓冲区的内存分配受 –use-mmap 标志的影响。
–cache-dir=DIR
指定 rclone 将用于缓存的目录,以覆盖默认值。
默认值取决于操作系统:
- Windows
%LocalAppData%\rclone
,如果LocalAppData
已定义。 - macOS
$HOME/Library/Caches/rclone
,如果HOME
已定义。 - Unix
$XDG_CACHE_HOME/rclone
,如果XDG_CACHE_HOME
已定义,否则$HOME/.cache/rclone
,如果HOME
已定义。 - 所有操作系统的回退选项是
$TMPDIR/rclone
,其中TMPDIR
是 –temp-dir 的值。
你可以使用 配置路径 命令查看当前值。
缓存目录被 VFS 文件缓存 挂载功能大量使用,同时也被 serve、GUI 和 rclone 的其他部分使用。
–check-first
如果设置了此标志,在 sync
、copy
或 move
操作中,rclone 将在进行任何传输之前进行所有检查,以确定文件是否需要传输。通常,rclone 会尽快开始运行传输。
此标志在 IO 受限的系统上可能很有用,因为传输会干扰检查过程。
在使用 --order-by
时,它也有助于确保完美的排序。
如果在执行 rclone move
时同时设置了 --check-first
和 --order-by
,rclone 将使用传输线程删除不需要传输的源文件。这将确保传输和删除的完美排序,但会导致传输统计中的项目数量比预期更多。
使用此标志可能会使用更多内存,因为它实际上将 --max-backlog
设置为无限大。这意味着在传输开始之前,所有要传输的对象信息都将保存在内存中。
–checkers=N
最初,此选项仅控制并行运行的文件检查器数量,例如 rclone copy
命令使用。现在,它是 rclone 在多个地方使用的一个相当通用的并行性控制选项。
注意:检查器在同步过程中对文件进行相等性检查。对于某些存储系统(例如 S3、Swift、Dropbox),这可能需要相当长的时间,因此它们会并行运行。
默认情况下,会并行运行 8 个检查器。然而,对于反应较慢的后端,你可能需要将此默认值降低(而不是增加)到 4 个或更少线程。如果在文件检查阶段遇到后端服务器崩溃(例如,在后续或增量备份中,几乎没有或没有文件复制,而检查占用了大部分时间),特别建议这样做。在增加此设置时,请务必谨慎,并监控服务器健康状况和文件检查吞吐量。
-c, –checksum
通常情况下,rclone 会通过查看文件的修改时间和大小来判断文件是否相同。如果设置了这个标志,rclone 将检查文件的哈希值和大小来确定文件是否相同。
当远程存储不支持设置修改时间,并且需要比仅检查文件大小更精确的同步时,这个标志很有用。
当在存储相同哈希类型的远程存储之间传输文件时,这个标志非常有用,例如 Google Drive 和 Swift。有关哪些远程存储支持哪些哈希类型的详细信息,请参阅概述部分中的表格。
例如,rclone --checksum sync s3:/bucket swift:/bucket
比不使用 --checksum
标志运行得快得多。
使用此标志时,rclone 不会像通常那样更新远程文件的修改时间(如果它们不正确)。
–color WHEN
指定何时应在输出中添加颜色(和其他 ANSI 代码)。
AUTO
(默认)仅在输出是终端时允许使用 ANSI 代码
NEVER
从不允许使用 ANSI 代码
ALWAYS
始终添加 ANSI 代码,无论输出格式是终端还是文件
–compare-dest=DIR
在使用 sync
、copy
或 move
命令时,除了目标目录外,还会检查 DIR 中的文件。如果找到与源文件相同的文件,则不会从源复制该文件。这对于仅复制自上次备份以来更改的文件很有用。
你必须使用与同步目标相同的远程存储。比较目录不能与目标目录重叠。
请参阅 --copy-dest
和 --backup-dir
。
–config=CONFIG_FILE
指定 rclone 配置文件的位置,以覆盖默认值。例如 rclone config --config="rclone.conf"
。
确切的默认值描述起来有点复杂,因为在不同版本的 rclone 中引入了更改,同时要保持向后兼容性,但在大多数情况下,它很简单:
- 在 Windows 上是
%APPDATA%/rclone/rclone.conf
- 在其他系统上是
~/.config/rclone/rclone.conf
完整的逻辑如下:Rclone 将按优先级顺序在以下任何位置查找现有的配置文件:
rclone.conf
(在程序目录中,即 rclone 可执行文件所在的目录)%APPDATA%/rclone/rclone.conf
(仅在 Windows 上)$XDG_CONFIG_HOME/rclone/rclone.conf
(在所有系统上,包括 Windows)~/.config/rclone/rclone.conf
(有关~
符号的解释,请见下文)~/.rclone.conf
如果未找到现有的配置文件,则将在以下位置创建一个新的配置文件:
- 在 Windows 上:上述位置 2,除非不太可能出现的
APPDATA
未定义的情况,此时将使用位置 4。 - 在 Unix 上:如果
XDG_CONFIG_HOME
已定义,则使用位置 3,否则使用位置 4。 - 在所有操作系统上的回退选项是位置 5,如果无法创建 rclone 目录,但也未找到主目录,则将使用相对于当前工作目录的
.rclone.conf
路径作为最后手段。
上述路径中的 ~
符号在任何操作系统上都代表当前用户的主目录,其值定义如下:
- 在 Windows 上:如果
%HOME%
已定义,则使用%HOME%
,否则使用%USERPROFILE%
,或者使用%HOMEDRIVE%\%HOMEPATH%
。 - 在 Unix 上:如果
$HOME
已定义,则使用$HOME
,否则通过在操作系统特定的用户数据库(例如 passwd 文件)中查找当前用户来确定,或者使用 shell 命令cd && pwd
的结果。
如果你运行 rclone config file
,你将看到你的默认位置在哪里。
rclone 可执行文件所在目录中存在的现有文件 rclone.conf
总是优先使用,这意味着通过将 rclone 可执行文件下载到可写目录,然后在同一目录中创建一个空文件 rclone.conf
,就可以轻松地以“便携”模式运行。
如果位置设置为空字符串 ""
或文件名为 notfound
的路径,或者在 Windows 上用 NUL
表示、在 Unix 系统上用 /dev/null
表示的操作系统空设备,则 rclone 将仅在内存中保留配置文件。
文件格式是基本的 INI:文本部分,以 [section]
标题开头,后面是单独一行的 key=value
条目。在 rclone 中,每个远程存储由其自己的部分表示,其中部分名称定义了远程存储的名称。选项指定为 key=value
条目,其中键是不带 --backend-
前缀的选项名称,小写并使用 _
代替 -
。例如,选项 --mega-hard-delete
对应于键 hard_delete
。只能指定后端选项。一个特殊且必需的键 type
标识 存储系统,其值是 rclone help backends
命令返回的内部小写名称。注释以行首的 ;
或 #
表示。
示例:
[megaremote]
type = mega
user = [email protected]
pass = PDPcQVVjVtzFY-GTdDFozqBhTdsPg3qH
请注意,密码是 加密 形式。此外,许多存储系统使用基于令牌的身份验证而不是密码,这需要额外的步骤。使用交互式命令 rclone config
而不是手动编辑配置文件会更简单、更安全。
配置文件通常包含登录信息,因此应该设置受限的权限,以便只有当前用户可以读取它。rclone 在写入文件时会尝试确保这一点。 你也可以选择 加密 文件。
当使用基于令牌的身份验证时,配置文件必须是可写的,因为 rclone 需要更新其中的令牌。
为了降低损坏现有配置文件的风险,rclone 在保存更改时不会直接写入该文件。相反,它会先写入一个新的临时文件。如果配置文件已经存在,它将(在 Unix 系统上)尝试将其权限镜像到新文件。然后,它将把现有文件重命名为临时名称作为备份。接下来,rclone 将把新文件重命名为正确的名称,最后通过删除备份文件来清理。
如果 rclone 使用的配置文件路径是一个符号链接,则会对其进行解析,rclone 将写入解析后的路径,而不是覆盖符号链接。过程中使用的临时文件(如上所述)将写入解析后的配置文件所在的同一父目录,但如果该目录也是一个符号链接,则不会对其进行解析,临时文件将写入目录符号链接的位置。
–contimeout=TIME
设置连接超时时间。这应该是 Go 语言的时间格式,例如 5s
表示 5 秒,10m
表示 10 分钟,或 3h30m
。
连接超时是 rclone 等待与远程对象存储系统建立连接的时间。默认值是 1m
。
–copy-dest=DIR
在使用 sync
、copy
或 move
命令时,除了目标目录外,还会检查 DIR 中的文件。如果找到与源文件相同的文件,则会从 DIR 服务器端复制该文件到目标目录。这对于增量备份很有用。
使用的远程存储必须支持服务器端复制,并且必须使用与同步目标相同的远程存储。比较目录不能与目标目录重叠。
请参阅 --compare-dest
和 --backup-dir
。
–dedupe-mode MODE
设置去重命令的运行模式。可选值为 interactive
、skip
、first
、newest
、oldest
、rename
。默认值是 interactive
。
有关这些选项的含义,请参阅去重命令的更多信息。
–default-time TIME
如果文件或目录没有 rclone 可以读取的修改时间,rclone 将显示这个固定时间。
默认值是 2000-01-01 00:00:00 UTC
。可以按照 时间或时长选项 中所示的任何方式进行配置。
例如,--default-time 2020-06-01
将默认时间设置为 2020 年 6 月 1 日,--default-time 0s
将默认时间设置为 rclone 启动的时间。
–disable FEATURE,FEATURE,…
此选项用于禁用逗号分隔的可选功能列表。例如,要禁用服务器端移动和服务器端复制,可以使用:
--disable move,copy
功能名称可以使用任何大小写。
要查看可以禁用哪些功能,请使用:
--disable help
可以使用以下命令以 JSON 格式查看远程存储具有哪些功能:
rclone backend features remote:
请注意,对于一些布尔型(true
/false
)功能标志的功能,可以通过在前面加上 !
来将其设置为 true
。例如,可以使用 --disable CaseInsensitive
强制 CaseInsensitive
功能为 false
,使用 --disable '!CaseInsensitive'
强制其为 true
。一般来说,不建议这样做,但在极端情况下可能会有用。
(请注意,!
是一个 shell 命令,在类 Unix 平台上需要使用单引号或反斜杠进行转义。)
此标志在调试和特殊情况下可能很有用(例如,Google Drive 限制每天服务器端复制的总容量为 100 GiB)。
–disable-http2
此选项可阻止 rclone 在可用时尝试使用 HTTP/2。由于 Go 标准库中的问题,这有时可以加快传输速度。
–dscp VALUE
指定在连接中使用的差分服务代码点(DSCP)值或名称。这可以帮助 QoS 系统识别流量类别。允许使用 BE、EF、DF、LE、CSx 和 AFxx。
请参阅 差分服务 的描述,以了解该字段的作用。将其设置为 1(LE)以将流量标识为 SCAVENGER 类,可以避免在支持 DiffServ 的网络中占用过多带宽(RFC 8622)。
例如,如果你在路由器上配置了 QoS 以正确处理 LE 流量,运行以下命令:
rclone copy --dscp LE from:/from to:/to
将使该流量的优先级低于通常的互联网流量。
此选项在 Windows 上无效(请参阅 golang/go#42728)。
-n, –dry-run
进行一次试运行,不会进行任何永久性更改。使用此选项可以查看 rclone 会执行哪些操作,而无需实际执行。在设置 sync
命令时非常有用,因为该命令会删除目标中的文件。
–expect-continue-timeout=TIME
此选项指定在请求带有 “Expect: 100-continue” 头的情况下,在完全写入请求头后等待服务器的第一个响应头的时间。并非所有后端都支持使用此选项。
值为零表示无超时,会立即发送请求体,而无需等待服务器批准。此时间不包括发送请求头的时间。
默认值是 1s
。设置为 0
可禁用此功能。
–error-on-no-transfer
默认情况下,如果没有错误,rclone 将以返回码 0 退出。
此选项允许 rclone 在源和目标之间没有传输任何文件时返回退出码 9。这允许在脚本中使用 rclone,并在复制了数据时触发后续操作,或者在没有复制数据时跳过。
注意:启用此选项会将通常的非致命错误变为潜在的致命错误 - 请相应地检查和调整你的脚本!
–fix-case
通常,同步到不区分大小写的目标(如 macOS / Windows)时,如果源文件名和目标文件名大小写不同但其他方面相同,最终不会匹配文件名。例如,将 hello.txt
同步到 HELLO.txt
通常会使目标文件名保持为 HELLO.txt
。如果设置了 --fix-case
,则 HELLO.txt
将重命名为 hello.txt
以匹配源文件。
注意:
- 大小写不正确的目录名也会被修复
- 如果设置了
--immutable
,--fix-case
将被忽略 - 不建议使用
--local-case-sensitive
代替;它会导致HELLO.txt
被删除! - 旧的目标文件名不能被过滤器排除。特别要注意
--files-from
,它不遵守--ignore-case
! - 在不支持服务器端移动的远程存储上,
--fix-case
需要下载文件并重新上传。为避免这种情况,请不要使用--fix-case
。
–fs-cache-expire-duration=TIME
通过 API 使用 rclone 时,rclone 默认会在“fs 缓存”中缓存创建的远程存储 5 分钟。这意味着如果你对同一个远程存储进行重复操作,rclone 不必从头开始构建它,从而提高效率。
此标志设置远程存储的缓存时间。如果将其设置为 0
(或负数),rclone 将完全不缓存远程存储。
请注意,如果使用某些标志,例如 --backup-dir
,并且将此设置为 0
,rclone 可能会构建两个远程存储(一个用于源或目标,另一个用于 --backup-dir
,而之前可能只构建一个)。
–fs-cache-expire-interval=TIME
此选项控制 rclone 检查缓存的远程存储是否过期的频率。
有关更多信息,请参阅上面的 --fs-cache-expire-duration
文档。默认值是 60 秒,设置为 0 可禁用过期检查。
–header
为所有事务添加 HTTP 头。该标志可以重复使用以添加多个头。
如果你只想为上传添加头,请使用 --header-upload
,如果你只想为下载添加头,请使用 --header-download
。
此标志适用于所有基于 HTTP 的后端,即使是 --header-upload
和 --header-download
不支持的后端,因此可以谨慎地用作这些后端的解决方法。
rclone ls remote:test --header "X-Rclone: Foo" --header "X-LetMeIn: Yes"
–header-download
为所有下载事务添加 HTTP 头。该标志可以重复使用以添加多个头。
rclone sync --interactive s3:test/src ~/dst --header-download "X-Amz-Meta-Test: Foo" --header-download "X-Amz-Meta-Test2: Bar"
有关当前支持的后端,请参阅 此处 的 GitHub 问题。
–header-upload
为所有上传事务添加 HTTP 头。该标志可以重复使用以添加多个头。
rclone sync --interactive ~/src s3:test/dst --header-upload "Content-Disposition: attachment; filename='cool.html'" --header-upload "X-Amz-Meta-Test: FooBar"
有关当前支持的后端,请参阅 此处 的 GitHub 问题。
–human-readable
Rclone 命令输出的大小(例如字节数)和计数(例如文件数)可以是 原始 数字,也可以是 人类可读 格式。
在人类可读格式中,值会按比例缩放到更大的单位,并在值后面显示后缀,四舍五入到三位小数。Rclone 对大小始终使用二进制单位(2 的幂),对计数使用十进制单位(10 的幂)。大小的单位前缀遵循 IEC 标准表示法,例如 Ki
表示千字节。与字节单位一起使用时,1 KiB
表示 1024 字节。在列表类型的输出中,仅在值后面附加单位前缀(例如 9.762Ki
),而在更具文本性的输出中会显示完整的单位(例如 9.762 KiB
)。对于计数,使用 SI 标准表示法,例如前缀 k
表示千。用于文件计数时,1k
表示 1000 个文件。
各种 列表 命令默认输出原始数字。选项 --human-readable
会使它们以人类可读格式(带有短单位前缀)输出值。
关于 命令默认以人类可读格式输出,使用特定于命令的选项 --full
可以改为输出原始数字。
大小 命令在同一输出中同时输出人类可读和原始数字。
树状 命令也会考虑 --human-readable
,但它不会使用与其他命令完全相同的表示法:它会四舍五入到一位小数,并使用单字母后缀,例如用 K
代替 Ki
。这是因为它依赖于一个外部库。
交互式命令 ncdu 默认显示为人类可读格式,并响应 u
键来切换人类可读格式。
–ignore-case-sync
使用此选项会使 rclone 在同步时忽略文件的大小写,因此当现有文件名相同时,即使大小写不同,文件也不会被复制/同步。
–ignore-checksum
通常,rclone 会检查传输文件的校验和是否匹配,如果不匹配则会给出“传输时损坏”的错误。
你可以使用此选项跳过该检查。只有在你收到“传输时损坏”的错误消息,并且确定你可能想要传输可能已损坏的数据时,才应使用此选项。
–ignore-existing
使用此选项会使 rclone 无条件跳过目标上已存在的所有文件,无论这些文件的内容如何。
虽然这不是一个普遍推荐的选项,但在文件因加密而发生变化的情况下可能会有用。但是,在传输中断的情况下,它无法纠正部分传输。
在执行 move
/moveto
命令时,如果目标上存在同名文件,此标志将使跳过的文件在源位置保持不变。
–ignore-size
通常,rclone 会查看文件的修改时间和大小来判断它们是否相等。如果你设置了此标志,rclone 将仅检查修改时间。如果设置了 --checksum
,则仅检查校验和。
这也会使 rclone 在传输后跳过验证大小是否相同。
这对于向 OneDrive 传输文件或从 OneDrive 传输文件可能很有用,因为 OneDrive 偶尔会错误报告图像文件的大小(有关更多信息,请参阅 #399)。
-I, –ignore-times
使用此选项会使 rclone 无条件上传所有文件,而不考虑目标上文件的状态。
通常,rclone 会跳过所有修改时间相同且大小相同(或如果使用 --checksum
则校验和相同)的文件。
–immutable
将源文件和目标文件视为不可变的,并禁止修改。
设置此选项后,文件将按要求创建和删除,但现有文件永远不会被更新。如果源文件和目标文件之间的现有文件不匹配,rclone 将给出错误 Source and destination exist but do not match: immutable file modified
。
请注意,只有传输文件的命令(例如 sync
、copy
、move
)会受此行为影响,并且仅禁止修改。文件仍可以显式删除(例如 delete
、purge
)或隐式删除(例如 sync
、move
)。如果希望同时避免删除和修改,请使用 copy --immutable
。
这对于不可变或仅追加数据集(特别是备份存档)可以作为额外的保护层,因为修改意味着数据损坏,不应传播。
–inplace
--inplace
标志会改变 rclone 向某些后端(设置了 PartialUploads
功能标志的后端)上传文件时的行为,例如:
- 本地
- FTP
- SFTP
- pcloud
不使用 --inplace
(默认情况)时,rclone 会先上传到一个临时文件,其扩展名如下,其中 XXXXXX
表示源文件指纹的哈希值,.partial
是 –partial-suffix 的值(默认是 .partial
)。
original-file-name.XXXXXX.partial
(rclone 会确保最终名称不超过 100 个字符,必要时会截断 original-file-name
部分)。
上传完成后,rclone 会将 .partial
文件重命名为正确的名称,覆盖该位置的任何现有文件。如果上传失败,则会删除 .partial
文件。
这可以防止后端的其他用户在新名称下看到部分上传的文件,并防止在新文件完全上传之前覆盖旧文件。
如果提供了 --inplace
标志,rclone 将直接上传到最终名称,而不创建 .partial
文件。
这意味着在上传过程中,不完整的文件将在目录列表中可见,并且上传开始后,任何现有文件将立即被覆盖。如果传输失败,则会删除该文件。如果传输失败,这可能会导致现有文件的数据丢失。
请注意,在本地文件系统上,如果你不使用 --inplace
,硬链接(仅适用于 Unix)将被破坏。如果你使用 --inplace
,则无法更新正在使用的可执行文件。
另请注意,v1.63.0 之前的 rclone 版本的行为就好像始终提供了 --inplace
标志一样。
-i, –interactive
此标志可用于告知 rclone,你希望在进行破坏性操作之前进行手动确认。
建议 在学习使用 rclone 时,尤其是使用 rclone sync
时,使用此标志。
例如
$ rclone delete --interactive /tmp/dir
rclone: delete "important-file.txt"?
y) Yes, this is OK (default)
n) No, skip this
s) Skip all delete operations with no more questions
!) Do all delete operations with no more questions
q) Exit rclone now.
y/n/s/!/q> n
这些选项的含义如下:
y
:是,此操作应该继续进行。你也可以按回车键来执行此操作。除非你选择s
或!
,否则每次都会询问你。n
:否,不执行此操作。除非你选择s
或!
,否则每次都会询问你。s
:跳过 所有后续此类操作,不再询问。此设置在 rclone 退出前一直有效。如果有任何不同类型的操作,你仍会被提示。!
:执行所有 后续此类操作,不再询问。如果你已决定不介意 rclone 执行此类操作,此选项很有用。此设置在 rclone 退出前一直有效。如果有任何不同类型的操作,你仍会被提示。q
:退出 rclone,以防万一!
–leave-root
在执行 rmdirs
命令时,即使根目录为空,也不会删除它。
–links / -l
通常情况下,rclone 会忽略符号链接或 NTFS 链接点(在 Windows 下其行为类似于符号链接)。
如果提供了此标志,rclone 会从任何支持的后端复制符号链接,并将它们作为文本文件存储在目标位置,文件名后缀为 .rclonelink
。
该文本文件将包含符号链接的目标路径。
--links
/ -l
标志为所有支持的后端和 VFS 启用此功能。如果需要,还有单独的标志可仅为 VFS 启用该功能(--vfs-links
),以及为本地后端启用该功能(--local-links
)。
–log-file=FILE
将 rclone 的所有输出记录到指定的文件 FILE
中。默认情况下,此功能未启用。结合 -v
标志使用时,这对于追踪同步问题很有用。有关更多信息,请参阅日志记录部分。
如果文件 FILE
已存在,rclone 将追加内容到该文件中。
请注意,如果使用 logrotate
程序来管理 rclone 的日志,应使用 copytruncate
选项,因为 rclone 没有用于轮转日志的信号。
–log-format LIST
以逗号分隔的日志格式选项列表。接受的选项有 date
、time
、microseconds
、pid
、longfile
、shortfile
、UTC
。其他任何关键字将被静默忽略。pid
会在日志消息中标记进程标识符,这在使用 rclone mount --daemon
时很有用。其他接受的选项在 Go 文档 中有解释。默认的日志格式是 “date
,time
"。
–log-level LEVEL
此选项设置 rclone 的日志级别。默认的日志级别是 NOTICE
。
DEBUG
等同于-vv
。它会输出大量的调试信息,对于提交错误报告和深入了解 rclone 的操作很有用。INFO
等同于-v
。它会输出每次传输的信息,并默认每分钟打印一次统计信息。NOTICE
是在未提供任何日志记录标志时的默认日志级别。在一切正常运行时,它输出的信息很少。它会输出警告和重要事件。ERROR
等同于-q
。它只输出错误消息。
–use-json-log
此选项将 rclone 的日志格式切换为 JSON。JSON 日志的字段包括 level
、msg
、source
、time
。
–low-level-retries NUMBER
此选项控制 rclone 进行低级重试的次数。
低级重试用于重试失败的操作,通常是一个 HTTP 请求。例如,上传大文件的一个块时可能会用到。使用 -v
标志时,会在日志中看到低级重试的信息。
在正常操作中,通常不需要更改此默认值。但是,如果出现大量低级重试,你可能希望减小该值,以便 rclone 更快地进入高级重试(请参阅 --retries
标志)。
使用 --low-level-retries 1
可禁用低级重试。
–max-backlog=N
这是在同步、复制或移动操作中,排队等待检查或传输的文件的最大允许积压数量。
可以将其设置为任意大的值。只有在队列使用时才会占用内存。请注意,当积压队列处于使用状态时,它将按 N KiB 的数量级使用内存。
将此值设置得较大,可让 rclone 更准确地计算待处理文件的数量,给出更准确的预计完成时间,并使 --order-by
更准确地工作。
将此值设置得较小,会使 rclone 与远程列表的同步性更强,这可能是你所期望的。
将其设置为负数会使积压队列尽可能大。
–max-delete=N
此选项告诉 rclone 最多删除 N
个文件。如果超过该限制,将生成一个致命错误,rclone 将停止正在进行的操作。
–max-delete-size=SIZE
当删除文件的总大小达到指定的大小时,rclone 将停止删除操作。默认情况下,此功能未启用。
如果超过该限制,将生成一个致命错误,rclone 将停止正在进行的操作。
–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
进行测试。
–max-duration=TIME
rclone 在运行指定的持续时间后将停止传输。默认情况下,此功能未启用。
当达到限制时,所有传输将立即停止。使用 --cutoff-mode
可以修改此行为。
如果达到持续时间限制,rclone 将以退出代码 10 退出。
–max-transfer=SIZE
rclone 在传输达到指定的大小后将停止传输。默认情况下,此功能未启用。
当达到限制时,所有传输将立即停止。使用 --cutoff-mode
可以修改此行为。
如果达到传输限制,rclone 将以退出代码 8 退出。
–cutoff-mode=hard|soft|cautious
此选项修改 --max-transfer
和 --max-duration
的行为。默认值为 --cutoff-mode=hard
。
- 指定
--cutoff-mode=hard
时,rclone 达到限制后将立即停止传输。 - 指定
--cutoff-mode=soft
时,rclone 达到限制后将停止启动新的传输。 - 指定
--cutoff-mode=cautious
时,将尝试防止 rclone 达到限制。此选项仅适用于--max-transfer
。
-M, –metadata
设置此标志可使 rclone 将元数据从源复制到目标。对于本地后端,这包括所有权、权限、扩展属性等。有关更多信息,请参阅元数据部分。
–metadata-mapper SpaceSepList
如果你提供参数 --metadata-mapper /path/to/program
,rclone 将使用该程序将源对象的元数据映射到目标对象。
此标志的参数应该是一个命令,后面可以跟一个可选的以空格分隔的参数列表。如果其中一个参数包含空格,请将其用双引号 "
括起来;如果你想在参数中使用字面意义的双引号,请将参数用双引号括起来,并将双引号加倍。有关更多信息,请参阅 CSV 编码。
示例如下:
--metadata-mapper "python bin/test_metadata_mapper.py"
--metadata-mapper 'python bin/test_metadata_mapper.py "argument with a space"'
--metadata-mapper 'python bin/test_metadata_mapper.py "argument with ""two"" quotes"'
这使用了一个基于简单 JSON 的协议,通过标准输入(STDIN)接收输入,并通过标准输出(STDOUT)输出结果。对于每个复制的文件和目录,都会调用此程序,并且可能会并发调用。
该程序的任务是将输入的元数据块转换为适合目标后端的元数据块输出。
程序的输入(通过 STDIN)可能如下所示。这为 Metadata
提供了一些可能很重要的上下文信息。
SrcFs
是对象当前所在远程存储的配置字符串。SrcFsType
是源后端的名称。DstFs
是对象要复制到的远程存储的配置字符串。DstFsType
是目标后端的名称。Remote
是对象相对于根目录的路径。Size
、MimeType
、ModTime
是对象的属性。IsDir
如果这是一个目录,则为true
(尚未实现)。ID
是对象的源ID
(如果已知)。Metadata
是后端特定的元数据,如后端文档中所述。
{
"SrcFs": "gdrive:",
"SrcFsType": "drive",
"DstFs": "newdrive:user",
"DstFsType": "onedrive",
"Remote": "test.txt",
"Size": 6,
"MimeType": "text/plain; charset=utf-8",
"ModTime": "2022-10-11T17:53:10.286745272+01:00",
"IsDir": false,
"ID": "xyz",
"Metadata": {
"btime": "2022-10-11T16:53:11Z",
"content-type": "text/plain; charset=utf-8",
"mtime": "2022-10-11T17:53:10.286745272+01:00",
"owner": "[email protected]",
"permissions": "...",
"description": "my nice file",
"starred": "false"
}
}
然后,程序应根据需要修改输入内容,并将其发送到
STDOUT。 返回的 Metadata
字段将全部用于
目标对象。 其他字段将被忽略。 请注意
示例中,我们翻译了用户名和权限,并在
描述:
{
"Metadata": {
"btime": "2022-10-11T16:53:11Z",
"content-type": "text/plain; charset=utf-8",
"mtime": "2022-10-11T17:53:10.286745272+01:00",
"owner": "[email protected]",
"permissions": "...",
"description": "my nice file [migrated from domain1]",
"starred": "false"
}
}
元数据也可以在这里删除。
一个 python 程序的实现示例如下 上述转换。
import sys, json
i = json.load(sys.stdin)
metadata = i["Metadata"]
# Add tag to description
if "description" in metadata:
metadata["description"] += " [migrated from domain1]"
else:
metadata["description"] = "[migrated from domain1]"
# Modify owner
if "owner" in metadata:
metadata["owner"] = metadata["owner"].replace("domain1.com", "domain2.com")
o = { "Metadata": metadata }
json.dump(o, sys.stdout, indent="\t")
你可以在 rclone 源代码中的 bin/test_metadata_mapper.py 找到这个示例(稍有扩展)。
如果你想在日志中查看元数据映射器的输入和输出,可以使用 -vv --dump mapper
。
更多信息请参阅元数据部分。
–metadata-set key=value
上传时添加元数据 key
= value
。此选项可以根据需要重复多次。更多信息请参阅元数据部分。
–modify-window=TIME
在检查文件是否被修改时,这是文件允许的最大时间差,在此范围内仍会被视为相同。
默认值是 1ns
,除非被远程存储覆盖。例如,OS X 仅将修改时间存储到最接近的秒,因此如果你读写的是 OS X 文件系统,默认值将是 1s
。
此命令行标志允许你覆盖计算得出的默认值。
–multi-thread-write-buffer-size=SIZE
在使用多线程进行传输时,rclone 会为每个线程在内存中缓冲 SIZE 字节,然后再写入磁盘。
如果底层文件系统处理文件不同位置的大量小写入时性能不佳,此选项可以提高性能。因此,如果你发现传输受磁盘写入速度限制,可以尝试不同的值。特别是对于磁盘驱动器和远程文件系统,较大的值可能会很有用。
不过,默认的 128k
应该适用于几乎所有用例,因此在更改之前,请确保网络不是真正的瓶颈。
最后提示,大小不是唯一的因素:块大小(或类似概念)也会产生影响。在某个案例中,我们观察到 16k 的精确倍数比其他值的性能要好得多。
–multi-thread-chunk-size=SizeSuffix
通常,多线程传输的块大小由后端设置。然而,一些后端(如 local
和 smb
,它们实现了 OpenWriterAt
但未实现 OpenChunkWriter
)没有自然的块大小。
在这种情况下,将使用此选项的值(默认 64Mi)。
–multi-thread-cutoff=SIZE
当向支持的后端传输大于 SIZE 的文件时,rclone 将使用多线程传输文件(默认 256M)。
支持的后端在概述中标记为 MultithreadUpload
。(它们需要实现内部接口 OpenWriterAt
或 OpenChunkWriter
)。撰写本文时,这些后端包括 local
、s3
、azureblob
、b2
、oracleobjectstorage
和 smb
。
在本地磁盘上,rclone 会预先分配文件(在 Unix 上使用 fallocate(FALLOC_FL_KEEP_SIZE)
,在 Windows 上使用 NTSetInformationFile
,这两个操作都不会花费时间),然后每个线程直接写入文件的正确位置。这意味着 rclone 不会创建碎片化或稀疏文件,并且传输结束时不会有组装时间。
用于传输的线程数由 --multi-thread-streams
控制。
如果你想查看有关线程的信息,请使用 -vv
。
这适用于 sync
/copy
/move
命令及其相关命令 copyto
/moveto
。如果 --vfs-cache-mode
设置为 writes
或更高,rclone mount
和 rclone serve
也会使用多线程传输。
注意:这仅适用于作为目标的支持后端,但源可以是任何后端。
注意:本地到本地的复制默认禁用多线程复制,因为不使用多线程更快,除非显式设置 --multi-thread-streams
。
注意:在 Windows 上,使用多线程将文件传输到本地磁盘会导致生成的文件为稀疏文件。使用 --local-no-sparse
禁用稀疏文件(这可能会导致传输开始时出现长时间延迟),或使用 --multi-thread-streams 0
禁用多线程传输。
–multi-thread-streams=N
在使用多线程传输时(请参阅上面的 --multi-thread-cutoff
),此选项设置要使用的流数量。设置为 0
可禁用多线程传输(默认 4)。
如果后端有 --backend-upload-concurrency
设置(例如 --s3-upload-concurrency
),则如果该设置的值大于 --multi-thread-streams
的值或未设置 --multi-thread-streams
,将使用该设置作为传输数量。
–no-check-dest
--no-check-dest
选项可与 move
或 copy
命令配合使用,它会使 rclone 在复制文件时完全不检查目标位置。
这意味着:
- 不会对目标位置进行列表操作,从而减少 API 调用次数。
- 文件总是会被传输。
- 对于允许重复文件的远程存储(如 Google Drive),这可能会导致出现重复文件。
- 建议使用
--retries 1
,否则重试时会再次传输所有文件。
如果你确定目标位置没有任何文件,此标志可用于减少事务操作。
这是一个特殊的标志,大多数用户可以忽略它!
–no-gzip-encoding
不设置 Accept-Encoding: gzip
。这意味着 rclone 不会自动向服务器请求压缩文件。如果你已将服务器设置为返回带有 Content-Encoding: gzip
的文件,但你上传的是压缩文件,那么此选项会很有用。
在正常操作中无需设置此选项,设置它会降低 rclone 的网络传输效率。
–no-traverse
--no-traverse
标志用于控制在使用 copy
或 move
命令时是否遍历目标文件系统。--no-traverse
与 sync
命令不兼容,如果你在使用 sync
命令时提供此选项,它将被忽略。
如果你只复制少量文件(或者过滤掉了大部分文件),并且/或者目标位置有大量文件,那么 --no-traverse
会阻止 rclone 列出目标位置的文件,从而节省时间。
但是,如果你要复制大量文件,特别是在复制过程中很多文件没有更改且无需复制的情况下,不应该使用 --no-traverse
。
有关如何使用它的示例,请参阅 rclone copy。
–no-unicode-normalization
在同步过程中,不对文件名中的 Unicode 字符进行规范化处理。
有时,操作系统会以分解形式存储包含 Unicode 部分的文件名(特别是 macOS)。一些云存储系统随后会重新组合这些 Unicode 字符,如果将数据复制回本地文件系统,就会导致出现重复文件。
使用此标志将禁用该功能,将每个 Unicode 字符视为唯一字符。例如,默认情况下,é 和 é 会被规范化为同一个字符。使用 --no-unicode-normalization
后,它们将被视为不同的字符。
–no-update-modtime
使用此标志时,rclone 不会像通常那样更新远程文件的修改时间(如果它们不正确)。
如果远程存储也在使用其他工具进行同步(例如 Google Drive 客户端),则可以使用此选项。
–no-update-dir-modtime
使用此标志时,rclone 不会像通常那样更新远程目录的修改时间(如果它们不正确)。
–order-by string
--order-by
标志用于控制在 rclone sync
、rclone copy
和 rclone move
命令中,待处理文件的处理顺序。
排序字符串的构造方式如下。第一部分描述要衡量的方面:
size
- 按文件大小排序。name
- 按文件的完整路径排序。modtime
- 按文件的修改日期排序。
可以在后面加上逗号和修饰符:
ascending
或asc
- 按从小到大(或从旧到新)的顺序处理。descending
或desc
- 按从大到小(或从新到旧)的顺序处理。mixed
- 部分线程先处理最小的文件,部分线程先处理最大的文件。
如果修饰符是 mixed
,则可以有一个可选的百分比(默认为 50
),例如 size,mixed,25
表示 25% 的线程处理最小的文件,75% 的线程处理最大的文件。先处理最小文件的线程将始终先处理最小的文件,处理最大文件的线程也是如此。当你要传输大小不同的文件时,mixed
模式可用于最小化传输时间 - 大文件保证有上传线程和带宽,小文件也能持续处理。
如果未提供修饰符,则默认顺序为 ascending
。
例如:
--order-by size,desc
- 先发送最大的文件。--order-by modtime,ascending
- 先发送最旧的文件。--order-by name
- 按文件路径的字母顺序先发送文件。
如果未提供 --order-by
标志或提供了空字符串,则将使用默认排序,即按扫描顺序。使用 --checkers 1
时,这基本上是按字母顺序排列的,但使用默认的 --checkers 8
时,顺序会有些随机。
限制
--order-by
标志不会对数据进行单独的遍历。这意味着在以下情况下,它可能会按指定顺序之外的顺序传输一些文件:
- 待处理列表中没有文件,或者源文件尚未完全扫描。
- 待处理列表中的文件数量超过了 –max-backlog。
实际上,rclone 会尽力传输最合适的文件,因此这通常不会造成问题。可以将 --order-by
视为一个尽力而为的标志,而不是一个完美的排序标志。
如果你需要完美的排序,则需要指定 –check-first,它会先找出所有需要传输的文件,然后再进行传输。
–partial-suffix
当不使用 –inplace 选项时,rclone 会使用 --partial-suffix
作为临时文件的后缀。
后缀长度限制为 16 个字符。
默认值是 .partial
。
–password-command SpaceSepList
此标志提供一个程序,运行该程序时应提供配置密码。这是替代 rclone 提示输入密码或设置 RCLONE_CONFIG_PASS
变量的另一种方式。在首次设置配置密码时也会使用此选项。
该选项的参数应该是一个命令,后面跟着以空格分隔的参数列表。如果某个参数包含空格,则用 "
将其括起来;如果需要在参数中使用字面意义的 "
,则将参数用 "
括起来,并将 "
加倍。有关更多信息,请参阅 CSV 编码。
例如:
--password-command "echo hello"
--password-command 'echo "hello with space"'
--password-command 'echo "hello with ""quotes"" and space"'
请注意,在更改配置密码时,会设置环境变量 RCLONE_PASSWORD_CHANGE=1
。这可用于区分配置文件的初始解密和新密码的设置。
有关更多信息,请参阅 配置加密。
请参阅 Wiki 上的 Windows PowerShell 示例。
-P, –progress
此标志使 rclone 在终端的一个静态区域更新统计信息,提供传输的实时概览。
任何日志消息将在静态区域上方滚动显示。日志消息会将静态区域推到终端底部,并保持在那里。
通常,统计信息每 500 毫秒更新一次,但可以使用 --stats
标志覆盖这个更新周期。
此标志可以与 --stats-one-line
标志一起使用,以实现更简洁的显示。
若要更改文件名的显示长度(以适应不同的终端宽度),请参阅 --stats-file-name-length
选项。默认输出是为 80 字符宽的终端格式化的。
注意:在 Windows 系统上,直到 此问题 修复之前,使用 --progress
时,所有非 ASCII 字符将被替换为 .
。
–progress-terminal-title
此标志与 -P/--progress
一起使用时,会在终端标题中显示字符串 ETA: %s
。
-q, –quiet
此标志将限制 rclone 的输出,仅显示错误消息。
–refresh-times
--refresh-times
标志可用于在不支持哈希的后端上,更新现有文件的修改时间,当这些时间不同步时。
如果您上传的文件时间戳不正确,现在希望纠正它们,此标志会很有用。
此标志仅对不支持哈希的目标(例如 crypt
)有用。
此标志可用于任何同步命令,如 sync
、copy
或 move
。
要使用此标志,您需要进行修改时间同步(即不使用 --size-only
或 --checksum
)。使用 --size-only
或 --checksum
时,此标志将无效。
如果在使用此标志时 rclone 要上传一个文件,它会检查目标上是否已有同名文件。如果该文件的大小(以及可用的校验和)与源文件匹配,但时间戳不同,rclone 不会重新上传该文件,而是更新目标文件的时间戳。如果校验和不匹配,rclone 将上传新文件。如果没有校验和(例如在 crypt
后端),rclone 将更新时间戳。
请注意,某些远程存储在不重新上传文件的情况下无法设置修改时间,因此此标志在这些存储上的作用较小。
通常,如果您进行修改时间同步,只要远程存储支持校验和并且文件的校验和匹配,rclone 会在不使用 --refresh-times
的情况下更新修改时间。但是,如果没有校验和,rclone 会上传文件而不是设置时间戳,因为这是更安全的做法。
–retries int
如果同步失败,将重试整个同步过程,重试次数达到此数值(默认 3 次)后停止。
有些远程存储可能不稳定,进行几次重试有助于解决因错误而未传输的文件。
使用 --retries 1
可禁用重试。
–retries-sleep=TIME
此选项设置 --retries
指定的每次重试之间的间隔时间。
默认值为 0
。使用 0
可禁用此功能。
–server-side-across-configs
允许跨不同配置进行服务器端操作(例如复制或移动)。
如果您希望在使用相同后端但配置不同的两个远程存储之间进行服务器端复制或移动,此选项会很有用。
请注意,默认情况下此功能未启用,因为 rclone 难以判断在任意两个配置之间是否可行。
–size-only
通常,rclone 会查看文件的修改时间和大小来判断它们是否相同。如果设置此标志,rclone 将仅检查文件大小。
在从 Dropbox 传输文件时,此选项可能很有用,因为 Dropbox 桌面同步客户端修改文件时,不会像 rclone 那样设置校验和或修改时间。
–stats=TIME
传输数据的命令(sync
、copy
、copyto
、move
、moveto
)将定期打印数据传输统计信息,以显示其进度。
此选项设置统计信息的更新间隔。
默认值为 1m
。使用 0
可禁用此功能。
如果设置了统计信息更新间隔,所有命令都可以显示统计信息。这在运行其他命令(如 check
或 mount
)时可能很有用。
统计信息默认以 INFO
级别记录,这意味着在默认日志级别 NOTICE
下不会显示。使用 --stats-log-level NOTICE
或 -v
可使其显示。有关日志级别的更多信息,请参阅 日志记录部分。
请注意,在 macOS 上,您可以发送 SIGINFO 信号(通常在终端中是 ctrl-T
)来立即打印统计信息。
–stats-file-name-length integer
默认情况下,--stats
输出会截断长度超过 40 个字符的文件名和路径。这相当于提供了 --stats-file-name-length 40
。使用 --stats-file-name-length 0
可禁用统计信息中文件名的截断。
–stats-log-level string
设置显示 --stats
输出的日志级别。可以是 DEBUG
、INFO
、NOTICE
或 ERROR
。默认值是 INFO
。这意味着在默认日志级别 NOTICE
下,统计信息不会显示 - 如果您希望显示它们,请使用 --stats-log-level NOTICE
。有关日志级别的更多信息,请参阅 日志记录部分。
–stats-one-line
指定此选项时,rclone 会将统计信息压缩到一行,仅显示最重要的统计数据。
–stats-one-line-date
指定此选项时,rclone 启用单行统计信息,并在显示前添加日期字符串。默认格式为 2006/01/02 15:04:05 -
–stats-one-line-date-format
指定此选项时,rclone 启用单行统计信息,并在显示前添加用户提供的日期字符串。日期字符串必须用引号括起来。日期格式语法请遵循 Go 语言规范。
–stats-unit=bits|bytes
默认情况下,数据传输速率将以每秒字节数显示。
此选项允许以每秒比特数显示数据传输速率。
数据传输量仍将以字节为单位报告。
速率以二进制单位报告,而不是 SI 单位。因此,1 Mbit/s 等于 1,048,576 bit/s,而不是 1,000,000 bit/s。
默认值是 bytes
。
–suffix=SUFFIX
使用 sync
、copy
或 move
命令时,任何会被覆盖或删除的文件将添加此后缀。如果添加后缀后存在相同路径的文件,则会被覆盖。
使用的远程存储必须支持服务器端移动或复制,并且您必须使用与同步目标相同的远程存储。
此选项可用于为当前目录中的文件添加后缀,或与 --backup-dir
一起使用。有关更多信息,请参阅 --backup-dir
。
例如
rclone copy --interactive /path/to/local/file remote:current --suffix .bak
将把 /path/to/local
复制到 remote:current
,但任何会被更新或删除的文件将添加 .bak
后缀。
如果在使用 rclone sync
时使用 --suffix
且不使用 --backup-dir
,建议添加一个过滤规则,排除带有该后缀的文件,否则 sync
命令会删除备份文件。
rclone sync --interactive /path/to/local/file remote:current --suffix .bak --exclude "*.bak"
–suffix-keep-extension
使用 --suffix
时,设置此选项会使 rclone 将后缀添加到备份文件的扩展名之前,而不是之后。
假设我们设置了 --suffix -2019-01-01
,不使用此标志时,file.txt
将备份为 file.txt-2019-01-01
;使用此标志时,它将备份为 file-2019-01-01.txt
。这有助于确保添加后缀后的文件仍可正常打开。
如果一个文件有两个(或更多)扩展名,并且第二个(或后续)扩展名被识别为有效的 MIME 类型,则后缀将添加到该扩展名之前。因此,file.tar.gz
将备份为 file-2019-01-01.tar.gz
,而 file.badextension.gz
将备份为 file.badextension-2019-01-01.gz
。
–syslog
在支持的操作系统(非 Windows 或 Plan9)上,将所有日志输出发送到系统日志。
这在脚本中运行 rclone 或使用 rclone mount
时可能很有用。
–syslog-facility string
如果使用 --syslog
,此选项设置系统日志的设备(例如 KERN
、USER
)。有关可能的设备列表,请参阅 man syslog
。默认设备是 DAEMON
。
–temp-dir=DIR
指定 rclone 用于存放临时文件的目录,以覆盖默认设置。请确保该目录存在且具有可访问权限。
默认情况下,将使用操作系统的临时目录:
- 在 Unix 系统上,如果
$TMPDIR
非空,则使用该目录;否则使用/tmp
。 - 在 Windows 上,按顺序使用
%TMP%
、%TEMP%
、%USERPROFILE%
中第一个非空的值;若都为空,则使用 Windows 目录。
使用此选项覆盖默认设置时,指定的路径将在 Unix 系统上设置为环境变量 TMPDIR
的值,在 Windows 上设置为 TMP
和 TEMP
的值。
你可以使用 配置路径 命令查看当前值。
–tpslimit float
将每秒事务数限制为指定的数值。默认值为 0,表示不限制每秒事务数。
事务大致定义为一次 API 调用;其确切含义取决于后端。对于基于 HTTP 的后端,它是一次 HTTP PUT/GET/POST 等请求及其响应。对于 FTP/SFTP,它是一次 TCP 往返事务。
例如,要将 rclone 限制为每秒 10 个事务,可使用 --tpslimit 10
;若要限制为每 2 秒 1 个事务,可使用 --tpslimit 0.5
。
当 rclone 的每秒事务数导致云存储提供商出现问题(例如,导致你被封禁或受到速率限制)时,请使用此选项。
这对于 rclone mount
控制使用它的应用程序的行为非常有用。
此限制适用于所有基于 HTTP 的后端以及 FTP 和 SFTP 后端。它不适用于本地后端或 Storj 后端。
另请参阅 --tpslimit-burst
。
–tpslimit-burst int
--tpslimit
的最大事务突发量(默认值为 1
)。
通常,--tpslimit
会严格按照指定的每秒事务数进行操作。但是,如果你提供了 --tps-burst
,rclone 可以在空闲时积攒一些事务,从而实现最多达到指定参数数量的事务突发。
例如,如果你提供了 --tpslimit-burst 10
,那么如果 rclone 已经空闲了超过 10 * --tpslimit
的时间,它可以在再次受到限制之前快速执行 10 个事务。
这可用于在不改变长期每秒事务数平均值的情况下提高 --tpslimit
的性能。
–track-renames
默认情况下,rclone 不会跟踪重命名的文件。因此,如果你在本地重命名一个文件,然后将其同步到远程,rclone 将删除远程上的旧文件并上传一个新副本。
使用 --track-renames
进行 rclone 同步时,其行为与普通同步类似,但会跟踪存在于目标端但不存在于源端的对象(通常会被删除),以及存在于源端但不存在于目标端的对象(通常会被传输)。这些对象随后成为重命名的候选对象。
同步完成后,rclone 会使用指定的 --track-renames-strategy
匹配仅存在于源端和仅存在于目标端的对象,然后重命名目标端的对象,或者传输源端的对象并删除目标端的对象。与 rclone 的所有同步操作一样,--track-renames
是无状态的。
要使用此标志,目标端必须支持服务器端复制或服务器端移动;若要使用基于哈希的 --track-renames-strategy
(默认策略),源端和目标端必须具有兼容的哈希算法。
如果目标端不支持服务器端复制或移动,rclone 将回退到默认行为,并在控制台记录错误级别的消息。
如果 --track-renames-strategy
包含 hash
,则 --track-renames
当前不支持加密目标端。
请注意,--track-renames
与 --no-traverse
不兼容,并且它会使用额外的内存来跟踪所有重命名候选对象。
此外,--track-renames
与 --delete-before
不兼容,它将选择 --delete-after
而不是 --delete-during
。
–track-renames-strategy (hash,modtime,leaf,size)
此选项更改 --track-renames
的文件匹配标准。
匹配由逗号分隔的这些标记选择来控制:
modtime
- 文件的修改时间 - 并非所有后端都支持hash
- 文件内容的哈希值 - 并非所有后端都支持leaf
- 文件名(不包括目录名)size
- 文件的大小(此选项始终启用)
默认选项是 hash
。
使用 --track-renames-strategy modtime,leaf
将仅根据修改时间、文件名的叶子部分和大小来匹配文件。
使用 --track-renames-strategy modtime
或 leaf
可以为加密目标端启用 --track-renames
支持。
请注意,hash
策略不支持加密目标端。
–delete-(before,during,after)
此选项允许你指定在同步文件夹时,目标端的文件何时被删除。
指定值 --delete-before
将在开始传输任何新文件或更新文件 之前,删除存在于目标端但不存在于源端的所有文件。这需要对文件系统进行两次遍历,一次用于删除操作,一次用于复制操作。
指定 --delete-during
将在检查和上传文件的同时删除文件。这是最快的选项,并且使用的内存最少。
指定 --delete-after
(默认值)将延迟文件删除操作,直到所有新文件或更新文件都已成功传输。要删除的文件将在复制过程中收集,然后在复制过程成功完成后删除。要删除的文件将保存在内存中,因此此模式可能会使用更多内存。这是最安全的模式,因为只有在后续没有发生错误的情况下才会删除文件。如果在删除操作开始之前发生了错误,你将收到消息 not deleting files as there were IO errors
。
–fast-list
在执行任何涉及目录列表的操作时(例如 sync
、copy
、ls
- 实际上几乎每个命令),rclone 有不同的策略可供选择。
基本策略是列出一个目录并处理它,然后再使用更多的目录列表来处理任何子目录。这是一个必需的后端功能,称为 List
,这意味着所有后端都支持此功能。此策略使用少量内存,并且由于它可以并行化,因此对于涉及处理列表结果的操作来说速度很快。
一些后端支持一种替代策略,即可以在一次(或少量)事务中列出目录下的所有文件。rclone 通过一个名为 ListR
的可选后端功能支持这种替代策略。你可以在存储系统概述文档的 可选功能 部分查看哪些后端启用了此功能(通常是基于桶的后端,例如 S3、B2、GCS、Swift)。对于高度递归的操作,此策略需要的事务更少,这在按事务收费或事务受到严格速率限制的后端上非常重要。根据不同的参数,它可能更快(由于事务更少)或更慢(因为它无法并行化),并且如果 rclone 必须将整个列表保存在内存中,则可能需要更多内存。
rclone 为给定操作选择哪种列表策略很复杂,但一般来说,它会尝试选择最佳策略。在不需要将列出的文件保存在内存中的情况下,例如对于无限制的递归 ls
命令变体,它将优先选择 ListR
。在其他情况下,例如对于 sync
和 copy
,它需要将列出的文件保存在内存中,并且在执行操作时并行化可能会带来巨大优势,它将优先选择 List
。
rclone 无法考虑所有相关参数来决定最佳策略,因此允许你通过两种方式影响选择:你可以使用 –disable 选项禁用 ListR
功能(--disable ListR
),阻止 rclone 使用 ListR
;或者使用 --fast-list
选项,允许 rclone 在通常由于内存使用较高而不选择使用 ListR
的情况下使用它。无论哪种方式,rclone 应该始终产生相同的结果。在不支持 ListR
的远程上使用 --disable ListR
或 --fast-list
不会产生任何效果,rclone 将直接忽略它。
经验法则是,如果你按事务付费,并且可以将整个同步列表放入内存中,那么建议使用 --fast-list
。如果你要进行非常大的同步操作,则不要使用 --fast-list
,否则你将耗尽内存。在做出决定之前进行一些测试并进行比较,如果不确定,则保留默认设置,让 rclone 自行决定,即不使用 --fast-list
。
–timeout=TIME
设置 IO 空闲超时时间。如果传输已经开始,但随后空闲了这么长时间,则认为传输已中断并断开连接。
默认值是 5m
。设置为 0
可禁用此功能。
–transfers=N
并行运行的文件传输数量。如果远程端频繁出现超时,有时将此值设置为较小的数字会很有用;如果你有大量带宽和快速的远程端,则可以将其设置为较大的数字。
默认情况下,并行运行 4 个文件传输。
如果你想控制单个文件的传输,请查看 --multi-thread-streams
。
-u, –update
此选项强制 rclone 跳过目标端已存在且修改时间比源文件更新的所有文件。
在将文件传输到不直接支持修改时间的远程端时(或者在使用 --use-server-modtime
以避免额外的 API 调用时),这可以避免不必要的传输,因为它比 --size-only
检查更准确,并且比使用 --checksum
更快。在这样的远程端(或使用 --use-server-modtime
时),检查的时间将是上传时间。
如果目标端已存在的文件的修改时间比源文件的修改时间旧,并且文件大小不同,则将更新该文件。如果文件大小相同,则在校验和不同或不可用时将更新该文件。
如果目标端已存在的文件的修改时间与源文件的修改时间相同(在计算的修改时间窗口内),并且文件大小不同,则将更新该文件。在这种情况下,除非提供了 --checksum
标志,否则不会检查校验和。
在所有其他情况下,文件将不会被更新。
考虑使用 --modify-window
标志来补偿源端和后端之间的时间偏差,特别是对于不支持修改时间而使用上传时间的后端。但是,如果后端不支持校验和,请注意在时间偏差窗口内进行同步或复制操作可能仍会出于安全考虑进行额外的传输。
–use-mmap
如果设置了此标志,rclone 将在基于 Unix 的平台上使用通过 mmap
分配的匿名内存,在 Windows 上使用 VirtualAlloc
分配的内存作为其传输缓冲区(大小由 --buffer-size
控制)。以这种方式分配的内存不会存储在 Go 堆上,并且在使用完毕后可以立即返回给操作系统。
如果未设置此标志,rclone 将使用 Go 内存分配器分配和释放缓冲区,这可能会使用更多内存,因为内存页返回给操作系统的速度较慢。
此功能可能在所有平台上都不能很好地工作,因此默认情况下是禁用的;将来可能会默认启用。
–use-server-modtime
一些对象存储后端(例如 Swift、S3)不保留文件的修改时间(modtime)。在这些后端上,rclone 将原始修改时间作为额外的元数据存储在对象上。默认情况下,当操作需要修改时间时,它会进行一次 API 调用以检索该元数据。
使用此标志可以禁用额外的 API 调用,而是依赖服务器的修改时间。例如,在使用 --update
进行本地到远程的同步时,知道本地文件比上次上传到远程的时间更新就足够了。在这些情况下,此标志可以加快进程并减少所需的 API 调用数量。
在同步操作中使用此标志而不同时使用 --update
会导致除了上次上传时间之外任何时间修改的所有文件都被再次上传,这可能不是你想要的结果。
-v, -vv, –verbose
使用 -v
选项时,rclone 会告知你每个被传输的文件以及少量重要事件的信息。
使用 -vv
选项时,rclone 会变得非常详细,会告知你它所考虑和传输的每个文件的信息。请在提交 bug 报告时附上使用此设置生成的日志。
当通过环境变量设置详细程度时,分别使用 RCLONE_VERBOSE=1
对应 -v
,RCLONE_VERBOSE=2
对应 -vv
。
-V, –version
打印版本号
SSL/TLS 选项
rclone 发起的出站 SSL/TLS 连接可以通过这些选项进行控制。例如,这在使用 HTTP 或 WebDAV 后端时非常有用。rclone 的 HTTP 服务器有其自己的 SSL/TLS 配置,你可以在其文档中找到相关信息。
–ca-cert stringArray
此选项用于加载 PEM 编码的证书颁发机构(CA)证书,并使用这些证书来验证 rclone 连接的服务器证书。
如果你使用的是由本地 CA 签名的证书,那么你需要使用此标志来连接使用这些证书的服务器。
–client-cert string
此选项用于加载 PEM 编码的客户端证书。
这用于 双向 TLS 认证。
使用此选项时,还需要设置 --client-key
标志。
–client-key string
此选项用于加载 PEM 编码的客户端私钥,用于双向 TLS 认证。它与 --client-cert
选项配合使用。
–no-check-certificate=true/false
--no-check-certificate
用于控制客户端是否验证服务器的证书链和主机名。
如果 --no-check-certificate
为 true
,TLS 将接受服务器呈现的任何证书以及该证书中的任何主机名。
在这种模式下,TLS 容易受到中间人攻击。
此选项的默认值为 false
。
此选项仅应用于测试目的。
配置加密
你的配置文件包含登录云服务的信息。这意味着你应该将 rclone.conf
文件保存在安全的位置。
如果你所处的环境无法保证这一点,你可以为配置文件添加密码。这意味着每次启动 rclone 时都需要提供该密码。
要为 rclone 配置添加密码,请执行 rclone config
命令。
>rclone config
Current remotes:
e) Edit existing remote
n) New remote
d) Delete remote
s) Set configuration password
q) Quit config
e/n/d/s/q>
选择 s
,设置配置密码:
e/n/d/s/q> s
Your configuration is not encrypted.
If you add a password, you will protect your login information to cloud services.
a) Add Password
q) Quit to main menu
a/q> a
Enter NEW configuration password:
password:
Confirm NEW password:
password:
Password set
Your configuration is encrypted.
c) Change Password
u) Unencrypt configuration
q) Quit to main menu
c/u/q>
现在你的配置已加密,每次启动 rclone 时都需要提供密码。详细信息见下文。在同一菜单中,你可以更改密码或完全移除配置的加密。
如果你丢失了密码,将无法恢复配置。
你还可以使用以下命令:
- rclone config encryption set 直接设置配置加密
- rclone config encryption remove 移除配置加密
- rclone config encryption check 检查配置是否正确加密。
rclone 使用 nacl secretbox,它基于 XSalsa20 和 Poly1305 算法,通过密钥加密技术对你的配置进行加密和认证。 密码会经过 SHA-256 哈希处理,生成的哈希值作为 secretbox 的密钥。哈希后的密码不会被存储。
虽然这提供了很好的安全性,但如果配置文件包含敏感信息,我们不建议将加密后的 rclone 配置文件存储在公共位置,除非你使用了非常强的密码。
如果在你的环境中是安全的,你可以设置 RCLONE_CONFIG_PASS
环境变量来包含你的密码,rclone 将使用该变量来解密配置。
你可以在脚本中为一个会话设置此变量。对于类 Unix 系统,将以下内容保存到一个名为 set-rclone-password
的文件中:
#!/bin/echo Source this file don't run it
read -s RCLONE_CONFIG_PASS
export RCLONE_CONFIG_PASS
然后在需要使用时源此文件。在 shell 中,你可以执行 source set-rclone-password
。它会提示你输入密码并将其设置到环境变量中。
另一种提供密码的方式是提供一个脚本,该脚本将检索密码并将其打印到标准输出。此脚本应具有完整指定的路径名,并且不依赖于任何环境变量。脚本可以通过 --password-command="..."
命令行参数或 RCLONE_PASSWORD_COMMAND
环境变量提供。
一个有用的示例是使用 passwordstore
应用程序来检索密码:
export RCLONE_PASSWORD_COMMAND="pass rclone/config"
如果 passwordstore
密码管理器保存了 rclone 配置的密码,使用脚本方法意味着密码主要由 passwordstore
系统保护,并且不会以明文形式嵌入脚本中,也不会通过标准命令被查看。在长时间运行的 rclone 会话中,密码副本很可能会被无意中捕获到日志文件或终端滚动缓冲区等中。使用脚本方法提供密码可以大大增强配置密码的安全性。
如果你在脚本中运行 rclone,除非使用 --password-command
方法,否则你可能希望禁用密码提示。为此,向 rclone 传递 --ask-password=false
参数。这将使 rclone 在 RCLONE_CONFIG_PASS
不包含有效密码且未提供 --password-command
时直接失败,而不是提示输入密码。
无论何时运行可能受配置文件选项影响的命令,rclone 都会根据 上述规则 查找现有的配置文件,并加载找到的任何文件。如果找到加密文件,这包括对其进行解密,可能会导致密码提示。当执行你知道实际上不使用配置文件中任何内容的命令行时,你可以通过覆盖配置文件位置来避免加载它,例如使用文档中提到的仅内存配置的特殊值之一。由于配置文件中只能存储后端选项,因此对于不操作后端的命令(例如 completion
),通常不需要这样做。然而,对于通常会操作后端但在不引用存储的远程存储的情况下使用的命令(例如列出本地文件系统路径或 连接字符串),这将是相关的:rclone --config="" ls .
配置加密速查表
你可以快速应用配置加密,避免明文存储或传输。以下是针对常见操作系统的详细说明:
苹果系统(Mac)
- 生成并存储密码
security add-generic-password -a rclone -s config -w $(openssl rand -base64 40)
- 将密码检索指令添加到你的
.zprofile
或.profile
文件中
export RCLONE_PASSWORD_COMMAND="/usr/bin/security find-generic-password -a rclone -s config -w"
Linux系统
- 前提条件
Linux 系统没有默认的密码管理器。我们可以使用包管理器来安装 “pass” 工具,例如使用 apt install pass
、yum install pass
,
等等;然后初始化一个密码存储库:
pass init rclone
- 生成并存储密码
echo $(openssl rand -base64 40) | pass insert -m rclone/config
- 添加密码检索指令
export RCLONE_PASSWORD_COMMAND="/usr/bin/pass rclone/config"
Windows系统
- 生成并存储密码
New-Object -TypeName PSCredential -ArgumentList "rclone", (ConvertTo-SecureString -String ([System.Web.Security.Membership]::GeneratePassword(40, 10)) -AsPlainText -Force) | Export-Clixml -Path "rclone-credential.xml"
- 添加密码检索指令
[Environment]::SetEnvironmentVariable("RCLONE_PASSWORD_COMMAND", "[System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR((Import-Clixml -Path "rclone-credential.xml").Password))")
加密配置文件(所有系统)
-
执行
rclone config
->s
-
添加或更新上一步中的密码
开发者选项
这些选项在开发或调试 rclone 时非常有用。还有一些特定于远程存储的选项没有在此文档中列出,它们主要用于测试。这些选项以远程存储名称开头,例如 --drive-test-option
,你可以查看相关远程存储的文档以了解更多信息。
–cpuprofile=FILE
将 CPU 性能分析数据写入指定文件。你可以使用 go tool pprof
来分析这些数据。
–dump flag,flag,flag
--dump
标志接受一个以逗号分隔的标志列表,用于输出相关信息。
请注意,某些显示的请求头(如 Accept-Encoding
)可能在请求中并不准确,如果 Go 标准库启用了自动 gzip 编码,响应中可能不会显示 Content-Encoding
。在这种情况下,请求体将在显示前进行解压缩。
可用的标志如下:
–dump headers
输出 HTTP 请求头,但会移除 Authorization:
行。不过,输出内容仍可能包含敏感信息。此选项可能会产生大量输出,仅用于调试目的。
如果你确实需要查看 Authorization:
头信息,请使用 --dump auth
。
–dump bodies
输出 HTTP 请求头和请求体,这些内容可能包含敏感信息。此选项可能会产生大量输出,仅用于调试目的。
请注意,请求体将被缓存在内存中,因此不要对大文件使用此选项。
–dump requests
类似于 --dump bodies
,但仅输出请求体和响应头。此选项对于调试下载问题非常有用。
–dump responses
类似于 --dump bodies
,但仅输出响应体和请求头。此选项对于调试上传问题非常有用。
–dump auth
输出 HTTP 请求头,其中会包含如 Authorization:
头这样的敏感信息。如果你不想显示 Authorization:
头,请使用 --dump headers
。此选项可能会产生大量输出,仅用于调试目的。
–dump filters
将过滤器信息输出到控制台。此选项有助于查看 include
和 exclude
选项的确切过滤规则。
–dump goroutines
在命令执行结束时,将正在运行的 Go 协程列表输出到标准输出。
–dump openfiles
在命令执行结束时,将打开的文件列表输出到控制台。此选项使用 lsof
命令来获取文件列表,因此你需要安装 lsof
才能使用此选项。
–dump mapper
显示发送到 --metadata-mapper
程序的 JSON 数据块以及从该程序接收到的数据。此选项对于调试元数据映射器接口非常有用。
–memprofile=FILE
将内存性能分析数据写入指定文件。你可以使用 go tool pprof
来分析这些数据。
过滤规则
关于以下过滤选项:
--delete-excluded
--filter
--filter-from
--exclude
--exclude-from
--exclude-if-present
--include
--include-from
--files-from
--files-from-raw
--min-size
--max-size
--min-age
--max-age
--dump filters
--metadata-include
--metadata-include-from
--metadata-exclude
--metadata-exclude-from
--metadata-filter
--metadata-filter-from
请参阅 过滤规则部分。
远程控制
关于远程控制选项以及如何远程控制 rclone 的说明:
--rc
- 以及所有以
--rc-
开头的选项
请参阅 远程控制部分。
日志记录
rclone 有 4 个日志级别:ERROR
(错误)、NOTICE
(通知)、INFO
(信息)和 DEBUG
(调试)。
默认情况下,rclone 将日志输出到标准错误流。这意味着你可以重定向标准错误流,同时仍然可以看到 rclone 命令的正常输出(例如 rclone ls
)。
默认情况下,rclone 会输出 Error
和 Notice
级别的消息。
如果你使用 -q
标志,rclone 将只输出 Error
级别的消息。
如果你使用 -v
标志,rclone 将输出 Error
、Notice
和 Info
级别的消息。
如果你使用 -vv
标志,rclone 将输出 Error
、Notice
、Info
和 Debug
级别的消息。
你也可以使用 --log-level
标志来控制日志级别。
如果你使用 --log-file=FILE
选项,rclone 将把 Error
、Info
和 Debug
级别的消息以及标准错误流重定向到指定文件。
如果你使用 --syslog
标志,rclone 将把日志记录到系统日志中,并且可以使用 --syslog-facility
来控制使用哪个系统日志设施。
rclone 会在所有日志消息前加上大写的日志级别前缀,例如 INFO
,这使得在日志文件中查找不同类型的信息变得容易。
指标监控
rclone 可以以 OpenMetrics/Prometheus 格式发布指标。
要启用指标端点,请使用 --metrics-addr
标志。如果同时提供了 --rc
标志和 --rc-enable-metrics
标志,或者使用 rclone rcd
并启用 --rc-enable-metrics
,指标也可以在 --rc-addr
端口上发布。
rclone 为指标 HTTP 端点提供了广泛的配置选项。这些设置都在 Metrics
部分下,并且以 --metrics-*
为前缀。
当使用 --rc-enable-metrics
启用指标时,它们将在与 rc API 相同的端口上发布。在这种情况下,--metrics-*
标志将被忽略,HTTP 端点的配置将由 --rc-*
参数管理。
退出代码
如果在命令执行过程中发生任何错误,rclone 将以非零退出代码退出。这允许脚本检测 rclone 操作是否失败。
在启动阶段,如果在配置中检测到错误,rclone 将立即退出。退出前总会有一条日志消息。
当 rclone 运行时,它会在运行过程中累积错误,只有在(经过重试后)仍然存在失败的传输时,才会以非零退出代码退出。对于每个统计的错误,都会有一条高优先级的日志消息(使用 -q
标志可见)显示错误消息以及导致问题的文件。在开始重试时也会显示一条高优先级消息,以便用户可以看到任何先前的错误消息在重试后可能不再有效。如果 rclone 进行了重试,并且重试成功,它将记录一条高优先级消息。
退出代码列表
0
- 成功1
- 未分类的错误2
- 语法或使用错误3
- 目录未找到4
- 文件未找到5
- 临时错误(可能通过更多重试解决)(重试错误)6
- 不太严重的错误(如来自 Dropbox 的 461 错误)(无需重试的错误)7
- 致命错误(更多重试无法解决,如账户被暂停)(致命错误)8
- 传输超出限制 - 达到--max-transfer
设置的限制9
- 操作成功,但没有文件被传输(需要启用--error-on-no-transfer
)10
- 持续时间超出限制 - 达到--max-duration
设置的限制
环境变量
rclone 可以完全使用环境变量进行配置。这些环境变量可以用于设置选项或配置文件条目的默认值。
选项
rclone 中的每个选项都可以通过环境变量设置默认值。
要查找环境变量的名称,首先取长选项名称,去掉前面的 --
,将 -
替换为 _
,转换为大写,并在前面加上 RCLONE_
。
例如,要始终将 --stats
设置为 5s
,可以设置环境变量 RCLONE_STATS=5s
。如果你在命令行上设置了 stats
,则会覆盖环境变量的设置。
或者,要始终在 Google Drive 中使用回收站,可以设置 --drive-use-trash
,则可以设置 RCLONE_DRIVE_USE_TRASH=true
。
详细程度的设置略有不同,--verbose
或 -v
对应的环境变量是 RCLONE_VERBOSE=1
,-vv
对应的是 RCLONE_VERBOSE=2
。
选项和环境变量使用相同的解析器,因此它们的格式完全相同。
通过 -vv
标志可以查看由环境变量设置的选项,例如 rclone version -vv
。
可以多次出现的选项(类型为 stringArray
)在作为环境变量处理时略有不同,因为环境变量只能定义一次。为了提供一种简单的机制来添加一个或多个项,输入将被视为 CSV 编码 的字符串。例如:
环境变量 | 等效选项 |
---|---|
RCLONE_EXCLUDE="*.jpg" |
--exclude "*.jpg" |
RCLONE_EXCLUDE="*.jpg,*.png" |
--exclude "*.jpg" --exclude "*.png" |
RCLONE_EXCLUDE='"*.jpg","*.png"' |
--exclude "*.jpg" --exclude "*.png" |
RCLONE_EXCLUDE='"/directory with comma , in it /**"' |
--exclude "/directory with comma , in it /**" |
如果 stringArray
选项既在环境变量中定义,又在命令行上作为选项使用,那么所有的值都会被使用。
配置文件
你可以为配置文件中的值在单个远程存储的基础上设置默认值。每个后端的配置项名称在相应的页面上有文档说明。
要查找需要设置的环境变量名称,需要使用 RCLONE_CONFIG_
加上远程存储的名称,再加上 _
和配置文件选项的名称,并将其全部转换为大写。
请注意,这意味着远程存储的名称必须能够转换为有效的环境变量名称,因此它只能包含字母、数字或 _
(下划线)字符。
例如,要在不使用配置文件的情况下配置一个名为 mys3:
的 S3 远程存储(使用 Unix 设置环境变量的方式):
$ export RCLONE_CONFIG_MYS3_TYPE=s3
$ export RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=XXX
$ export RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=XXX
$ rclone lsd mys3:
-1 2016-09-21 12:54:21 -1 my-bucket
$ rclone listremotes | grep mys3
mys3:
请注意,如果你想使用环境变量创建一个远程存储,必须像上面那样创建 ..._TYPE
变量。
请注意,使用环境变量创建的远程存储的名称是不区分大小写的,这与存储在配置文件中的常规远程存储不同,如 上面 所述。你必须在环境变量中使用大写名称,但从上面的示例可以看出,它将以小写形式列出并可以访问,同时你也可以使用大写名称来引用同一个远程存储:
$ rclone lsd mys3:
-1 2016-09-21 12:54:21 -1 my-bucket
$ rclone lsd MYS3:
-1 2016-09-21 12:54:21 -1 my-bucket
请注意,你只能设置直接后端的选项,因此如果 myS3Crypt
是一个基于 S3 远程存储的加密远程存储,RCLONE_CONFIG_MYS3CRYPT_ACCESS_KEY_ID
将不起作用。然而,RCLONE_S3_ACCESS_KEY_ID
将设置所有使用 S3 的远程存储的访问密钥,包括 myS3Crypt
。
还请注意,现在 rclone 有了 连接字符串,使用它们可能会更容易,上面的示例可以改为:
rclone lsd :s3,access_key_id=XXX,secret_access_key=XXX:
优先级
后端配置的各种不同方法按以下顺序读取,第一个有值的方法将被使用。
- 连接字符串中的参数,例如
myRemote,skip_links:
- 命令行上提供的标志值,例如
--skip-links
- 特定于远程存储的环境变量,例如
RCLONE_CONFIG_MYREMOTE_SKIP_LINKS
(见上文)。 - 特定于后端的环境变量,例如
RCLONE_LOCAL_SKIP_LINKS
。 - 通用后端环境变量,例如
RCLONE_SKIP_LINKS
。 - 配置文件,例如
skip_links = true
。 - 默认值,例如
false
- 这些值不能更改。
因此,如果在命令行上提供了 --skip-links
,并且设置了环境变量 RCLONE_LOCAL_SKIP_LINKS
,则命令行标志将优先使用。
通过 -vv
标志可以查看由环境变量设置的后端配置,例如 rclone about myRemote: -vv
。
对于非后端配置,顺序如下:
- 命令行上提供的标志值,例如
--stats 5s
。 - 环境变量,例如
RCLONE_STATS=5s
。 - 默认值,例如
1m
- 这些值不能更改。
其他环境变量
RCLONE_CONFIG_PASS
设置为包含你的配置文件密码(请参阅 配置加密 部分)HTTP_PROXY
、HTTPS_PROXY
和NO_PROXY
(或其小写版本)。- 对于 HTTPS 请求,
HTTPS_PROXY
优先于HTTP_PROXY
。 - 环境变量的值可以是完整的 URL 或 “host[:port]” 格式,在这种情况下,假定使用 “http” 方案。
- 对于 HTTPS 请求,
USER
和LOGNAME
值用作当前用户名的备用值。查找用户名的主要方法是特定于操作系统的:在 Windows 上使用 Windows API,在 Unix 系统上使用/etc/passwd
中的真实用户 ID。在文档中,当前用户名简称为$USER
。RCLONE_CONFIG_DIR
- rclone 设置 此变量,用于在配置文件和子进程中指向包含配置文件的目录。
通过 -vv
和 --log-level=DEBUG
标志可以查看由环境变量设置的选项,例如 rclone version -vv
。