rclone serve s3
通过 S3 协议为 remote:path
提供服务。
概要
serve s3
实现了一个基本的 S3 服务器,通过 S3 协议为远程存储提供服务。
可以使用 S3 客户端查看该服务,也可以创建一个 S3 类型的远程存储,使用 rclone 对其进行读写操作。
serve s3
被视为 实验性 功能,请谨慎使用。
S3 服务器支持版本 4 的签名认证。只需使用 --auth-key accessKey,secretKey
并在请求中正确设置 Authorization
头即可。(请参阅 AWS 文档)。
--auth-key
可以重复使用以设置多组认证信息。如果未提供 --auth-key
,则 serve s3
将允许匿名访问。
请注意,某些客户端可能需要 HTTPS 端点。有关更多信息,请参阅 SSL 文档。
此命令使用 VFS 目录缓存。
所有功能在 --vfs-cache-mode off
模式下均可正常工作。使用 --vfs-cache-mode full
(或 writes
)模式可以将对象缓存到本地,以提高性能。
如果想将存储桶名称作为主机名的一部分(例如 mybucket.local),请使用 --force-path-style=false
。
如果想更改 ETag
使用的哈希算法,请使用 --etag-hash
。
请注意,使用除 MD5
(默认值)之外的任何哈希算法都可能会给依赖 Etag 为 MD5 的 S3 客户端带来问题。
快速入门
要通过 S3 协议为 remote:path
提供简单的服务,请按以下方式启动服务器:
rclone serve s3 --auth-key ACCESS_KEY_ID,SECRET_ACCESS_KEY remote:path
例如,要使用文件系统中的一个简单文件夹,运行服务器 命令:
rclone serve s3 --auth-key ACCESS_KEY_ID,SECRET_ACCESS_KEY local:/path/to/folder
服务器的 rclone.conf
可以是这样的:
[local]
type = local
不过,“本地 “配置是可选的。 如果运行服务器时使用 远程:路径”,如”/path/to/文件夹"(没有 “local: “前缀,也没有 rclone.conf “文件),rclone 就会退回到默认配置,这在 会在日志中显示警告。 但它还是会运行。
这将与 rclone(客户端)的远程配置兼容,即 的远程配置兼容:
[serves3]
type = s3
provider = Rclone
endpoint = http://127.0.0.1:8080/
access_key_id = ACCESS_KEY_ID
secret_access_key = SECRET_ACCESS_KEY
use_multipart_uploads = false
请注意,设置 disable_multipart_uploads = true
是为了绕过
一个 bug,该 bug 会在适当的时候修复。
漏洞
在上传多部分文件时,serve s3
会将所有部分保存在内存中(参见 #7453)。
这是 rclone 用于提供 S3 服务的库的一个限制,有望在某个时候得到修复。
多部分服务器端复制功能无法正常工作(参见 #7454)。这些操作会花费很长时间,最终会失败。 多部分服务器端复制的默认阈值是 5G,这是它能设置的最大值,因此超过这个大小的文件将无法在服务器端进行复制。
有关 serve s3
当前的漏洞列表,请查看 GitHub 上的 serve s3 漏洞类别。
限制
serve s3
会将根目录下的所有目录视为存储桶,并忽略根目录下的所有文件。
你可以使用 CreateBucket
在根目录下创建文件夹,但不能在非根目录的其他文件夹下创建空文件夹。
使用 PutObject
或 DeleteObject
时,rclone 会自动创建或清理空文件夹。
如果你不想自动清理空文件夹,请使用 --no-cleanup
。
使用 ListObjects
时,当分隔符为空时,rclone 将使用 /
。
这可以减少后端请求,并且对大多数操作没有影响,但如果分隔符不是 /
且不为空,rclone 将对后端进行完整的递归搜索,这可能需要一些时间。
目前不支持版本控制。
除了 rclone 的 mtime
元数据(会被设置为文件的修改时间)之外,其他元数据仅会保存在内存中。
支持的操作
serve s3
目前支持以下操作。
- Bucket
ListBuckets
CreateBucket
DeleteBucket
- Object
HeadObject
ListObjects
GetObject
PutObject
DeleteObject
DeleteObjects
CreateMultipartUpload
CompleteMultipartUpload
AbortMultipartUpload
CopyObject
UploadPart
其他操作将返回错误 Unimplemented
。
认证
默认情况下,此服务无需登录即可提供文件访问。
你可以使用一个可容纳多个用户的 htpasswd 文件,或者使用 --user
和 --pass
标志设置单个用户名和密码。
如果上述两种方法都未配置静态用户,并且服务器通过 --client-ca
标志要求使用客户端证书,那么客户端证书的通用名称将被视为用户名。
使用 --htpasswd /path/to/htpasswd
来提供一个 htpasswd 文件。该文件采用标准的 Apache 格式,支持 MD5、SHA1 和 BCrypt 进行基本认证。建议使用 BCrypt。
要创建一个 htpasswd 文件,请执行以下操作:
touch htpasswd
htpasswd -B htpasswd user
htpasswd -B htpasswd anotherUser
密码文件可以在 rclone 运行时更新。
使用 --realm
来设置认证领域。
使用 --salt
来更改默认的密码哈希盐值。
服务器选项
使用 --addr
来指定服务器应监听的 IP 地址和端口,例如 --addr 1.2.3.4:8000
或 --addr :8080
以监听所有 IP 地址。默认情况下,服务器仅监听本地主机。你可以使用端口 :0
让操作系统选择一个可用的端口。
如果你将 --addr
设置为监听公共或局域网可访问的 IP 地址,建议使用认证 - 相关信息请参阅下一节。
你可以通过将 URL 设置为 unix:///path/to/socket
或仅使用绝对路径名来使用 Unix 套接字。
--addr
可以重复使用,以监听多个 IP 地址、端口或套接字。下面将进一步描述的套接字激活功能也可以实现相同的目的。
--server-read-timeout
和 --server-write-timeout
可用于控制服务器的超时时间。请注意,这是一次传输的总时间。
--max-header-bytes
控制服务器在 HTTP 头中接受的最大字节数。
--baseurl
控制 rclone 服务的 URL 前缀。默认情况下,rclone 将从根目录提供服务。如果你使用 --baseurl "/rclone"
,那么 rclone 将从以 “/rclone/” 开头的 URL 提供服务。如果你想对 rclone 服务进行代理,这将非常有用。rclone 会自动在 --baseurl
前后插入 “/",因此 --baseurl "rclone"
、--baseurl "/rclone"
和 --baseurl "/rclone/"
的处理方式是相同的。
TLS (SSL)
默认情况下,此服务通过 HTTP 提供。如果你希望通过 HTTPS 提供服务,你需要提供 --cert
和 --key
标志。
如果你希望进行客户端证书验证,你还需要提供 --client-ca
。
--cert
必须设置为包含 PEM 编码证书或该证书与 CA 证书的串联文件的路径。--key
必须设置为包含 PEM 编码私钥文件的路径。如果设置了 --client-ca
,则应将其设置为包含 PEM 编码客户端证书颁发机构证书文件的路径。
--min-tls-version
是可接受的最小 TLS 版本。有效值为 “tls1.0”、“tls1.1”、“tls1.2” 和 “tls1.3”(默认值为 “tls1.0”)。
套接字激活
如果服务管理器传递了任何文件描述符(FD),rclone 将监听这些 FD,而不是上述指定的监听地址(并忽略 --addr
传递的任何参数)。
这允许 rclone 成为一个套接字激活的服务。可以按照 https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html 中描述的方式使用 .socket 和 .service 单元文件进行配置。
可以使用 systemd-socket-activate
命令临时测试套接字激活:
systemd-socket-activate -l 8000 -- rclone serve
这将在首次通过 TCP 连接到端口 8000 时激活 rclone。
VFS - 虚拟文件系统
此命令使用 VFS 层。该层将 rclone 使用的云存储对象转换为更类似于磁盘文件系统的形式。
云存储对象具有许多与磁盘文件不同的属性 - 你无法扩展它们或向其中间写入数据,因此 VFS 层必须处理这些问题。由于没有一种通用的正确方法来处理这些问题,下面将解释各种选项。
VFS 层还实现了一个目录缓存 - 它将文件和目录的信息(但不包括数据)缓存在内存中。
VFS 目录缓存
使用 --dir-cache-time
标志,你可以控制一个目录在多长时间内被认为是最新的,而无需从后端刷新。通过 VFS 进行的更改将立即显示或使缓存失效。
--dir-cache-time duration 目录条目缓存的时间(默认值:5m0s)
--poll-interval duration 轮询更改的间隔时间。必须小于 dir-cache-time。仅适用于支持的远程存储。设置为 0 以禁用(默认值:1m0s)
然而,如果配置的后端不支持轮询更改,通过 Web 界面或另一个 rclone 副本直接在云存储上进行的更改只有在目录缓存过期后才能被检测到。如果后端支持轮询,更改将在轮询间隔内被检测到。
你可以向 rclone 发送 SIGHUP
信号,以刷新所有目录缓存,无论它们的年龄如何。假设只有一个 rclone 实例在运行,你可以按以下方式重置缓存:
kill -SIGHUP $(pidof rclone)
如果你使用 远程控制 配置了 rclone,你可以使用 rclone rc 刷新整个目录缓存:
rclone rc vfs/forget
或者刷新单个文件或目录:
rclone rc vfs/forget file=path/to/file dir=path/to/dir
VFS 文件缓冲
--buffer-size
标志决定了预先缓冲数据所使用的内存量。
每个打开的文件将始终尝试在内存中保留指定数量的数据。缓冲的数据与一个打开的文件绑定,不会共享。
此标志是每个打开文件使用内存的上限。缓冲区仅为已下载但尚未读取的数据使用内存。如果缓冲区为空,仅会使用少量内存。
rclone 用于缓冲的最大内存量可以达到 --buffer-size * 打开的文件数
。
VFS 文件缓存
这些标志控制 VFS 文件缓存选项。文件缓存对于使 VFS 层看起来与普通文件系统兼容是必要的。可以禁用它,但会牺牲一些兼容性。
例如,如果你想同时对一个文件进行读写操作,则需要启用 VFS 缓存。更多详细信息请参阅下文。
请注意,VFS 缓存与缓存后端是分开的,你可能需要其中一个或两个都需要。
--cache-dir string rclone 用于缓存的目录。
--vfs-cache-mode CacheMode 缓存模式,可选值为 off|minimal|writes|full(默认值为 off)
--vfs-cache-max-age duration 缓存中对象自上次访问以来的最大时间(默认值为 1 小时 0 分 0 秒)
--vfs-cache-max-size SizeSuffix 缓存中对象的最大总大小(默认值为无限制)
--vfs-cache-min-free-space SizeSuffix 包含缓存的磁盘上的目标最小可用空间(默认值为无限制)
--vfs-cache-poll-interval duration 轮询缓存以查找过期对象的时间间隔(默认值为 1 分钟 0 秒)
--vfs-write-back duration 使用缓存时,文件最后一次使用后写回的时间(默认值为 5 秒)
如果使用 -vv
运行 rclone,它将打印文件缓存的位置。文件存储在用户缓存文件区域,该区域依赖于操作系统,但可以通过 --cache-dir
或设置相应的环境变量来控制。
缓存有 4 种不同的模式,通过 --vfs-cache-mode
进行选择。缓存模式越高,rclone 的兼容性就越好,但会消耗更多的磁盘空间。
请注意,文件只有在关闭且在 --vfs-write-back
秒内未被访问时才会写回到远程存储。如果 rclone 退出或崩溃时还有未上传的文件,下次使用相同标志运行 rclone 时,这些文件将会被上传。
如果使用 --vfs-cache-max-size
或 --vfs-cache-min-free-size
,请注意缓存可能会超过这些配额,原因有两个。一是因为缓存只每隔 --vfs-cache-poll-interval
检查一次。二是因为打开的文件无法从缓存中移除。当 --vfs-cache-max-size
或 --vfs-cache-min-free-size
被超过时,rclone 将首先尝试从缓存中移除访问最少的文件。rclone 会从最长时间未被访问的文件开始处理。这种缓存清理策略效率高,且更相关的文件可能会保留在缓存中。
--vfs-cache-max-age
会在自上次访问后经过设定的时间后,将文件从缓存中移除。默认值为 1 小时,这意味着会开始移除 1 小时内未被访问的文件。当访问一个缓存文件时,1 小时的计时器会重置为 0,并在再过 1 小时后才会移除该文件。请使用标准符号(s、m、h、d、w)指定时间。
如果使用 --vfs-cache-mode > off
,请勿在相同或重叠的远程存储上运行两个使用相同 VFS 缓存的 rclone 副本。这样做可能会导致数据损坏。你可以通过为每个 rclone 实例设置不同的 --cache-dir
来避免这个问题。如果使用的远程存储不重叠,则无需担心这个问题。
–vfs-cache-mode off
在此模式下(默认模式),缓存将直接从远程存储读取数据并直接写入远程存储,不会在磁盘上缓存任何内容。
这意味着某些操作将无法进行:
- 无法同时以读写模式打开文件
- 以写入模式打开的文件无法进行定位操作
- 以写入模式打开现有文件时必须设置 O_TRUNC
- 以 O_TRUNC 模式以读取模式打开的文件将仅以写入模式打开
- 仅以写入模式打开的文件将表现得好像设置了 O_TRUNC
- 打开模式 O_APPEND、O_TRUNC 将被忽略
- 如果上传失败,则无法重试
–vfs-cache-mode minimal
此模式与 “off” 模式非常相似,不同之处在于以读写模式打开的文件将被缓冲到磁盘。这意味着以写入模式打开的文件将更具兼容性,但仅使用最少的磁盘空间。
以下操作仍然无法进行:
- 仅以写入模式打开的文件无法进行定位操作
- 以写入模式打开现有文件时必须设置 O_TRUNC
- 仅以写入模式打开的文件将忽略 O_APPEND、O_TRUNC
- 如果上传失败,则无法重试
–vfs-cache-mode writes
在此模式下,仅以读取模式打开的文件仍然直接从远程存储读取,而仅以写入模式或读写模式打开的文件将首先被缓冲到磁盘。
此模式应支持所有正常的文件系统操作。
如果上传失败,将以指数级递增的间隔进行重试,最长间隔为 1 分钟。
–vfs-cache-mode full
在此模式下,所有的读写操作都会在磁盘上进行缓冲。当从远程存储读取数据时,也会将其缓冲到磁盘。
在此模式下,缓存中的文件将是稀疏文件,rclone 会跟踪已下载的文件部分。
因此,如果应用程序只读取每个文件的开头部分,rclone 将只缓冲文件的开头部分。这些文件在缓存中看起来是完整大小,但实际上是稀疏文件,只有已下载的数据存在。
此模式应支持所有正常的文件系统操作,并且在其他方面与 --vfs-cache-mode writes
模式相同。
读取文件时,rclone 将提前读取 --buffer-size
加上 --vfs-read-ahead
字节的数据。--buffer-size
会在内存中进行缓冲,而 --vfs-read-ahead
会在磁盘上进行缓冲。
使用此模式时,建议不要将 --buffer-size
设置得太大,如果需要,可以将 --vfs-read-ahead
设置得大一些。
重要提示:并非所有文件系统都支持稀疏文件。特别是 FAT/exFAT 文件系统不支持。如果缓存目录位于不支持稀疏文件的文件系统上,rclone 的性能会非常差,并且如果检测到这种情况,它会记录一条 ERROR 消息。
指纹识别
VFS 的各个部分使用指纹识别来判断本地文件副本相对于远程文件是否发生了更改。指纹识别基于以下信息生成:
- 文件大小
- 修改时间
- 哈希值
只要对象上有这些信息就会使用。
在某些后端,获取这些属性的速度较慢(每个对象需要额外的 API 调用或额外的处理工作)。
例如,local
和 sftp
后端的 hash
获取速度较慢,因为它们需要读取整个文件并进行哈希计算;而 s3
、swift
、ftp
和 qinqstor
后端的 modtime
获取速度较慢,因为它们需要额外的 API 调用才能获取该信息。
如果使用 --vfs-fast-fingerprint
标志,rclone 将不会在指纹识别中包含这些耗时的操作。这会使指纹识别的准确性降低,但速度会快很多,并且会提高缓存文件的打开速度。
如果在 local
、s3
或 swift
后端上运行 vfs 缓存,建议使用此标志。
请注意,如果更改此标志的值,缓存中文件的指纹可能会失效,文件需要重新下载。
VFS 分块读取
当 rclone 从远程存储读取文件时,它会以分块的方式进行读取。这意味着 rclone 不会请求整个文件,而是只读取指定的块。这样可以通过只从远程存储请求实际读取的块来减少某些远程存储的下载配额使用,但会增加请求的数量。
以下标志用于控制分块操作: –vfs-read-chunk-size SizeSuffix 以分块方式读取源对象(默认值:128M) –vfs-read-chunk-size-limit SizeSuffix 块大小加倍的最大限制(默认值:无限制) –vfs-read-chunk-streams int 同时进行读取的并行流数量
分块读取的行为会根据 --vfs-read-chunk-streams
参数的不同而有所变化。
--vfs-read-chunk-streams
== 0
Rclone 将开始读取大小为 --vfs-read-chunk-size
的块,然后每次读取时将块大小加倍。当指定了 --vfs-read-chunk-size-limit
且该值大于 --vfs-read-chunk-size
时,每个打开文件的块大小只会加倍到指定值。如果该值为 “off”(默认值),则不设置限制,块大小将无限增长。
若设置 --vfs-read-chunk-size 100M
且 --vfs-read-chunk-size-limit 0
,将下载以下部分:0 - 100M、100M - 200M、200M - 300M、300M - 400M 等等。当指定 --vfs-read-chunk-size-limit 500M
时,结果将是 0 - 100M、100M - 300M、300M - 700M、700M - 1200M、1200M - 1700M 等等。
将 --vfs-read-chunk-size
设置为 0
或 “off” 将禁用分块读取。
这些块不会在内存中进行缓冲。
--vfs-read-chunk-streams
> 0
Rclone 会同时读取 --vfs-read-chunk-streams
个大小为 --vfs-read-chunk-size
的块。每次读取的块大小将保持不变。
这在高延迟链接或连接到高性能对象存储的非常高带宽链接上能显著提高性能。
需要进行一些实验来找到 --vfs-read-chunk-size
和 --vfs-read-chunk-streams
的最优值,因为这些值取决于所使用的后端以及到后端的延迟。
对于高性能对象存储(例如 AWS S3),一个合理的起始设置可能是 --vfs-read-chunk-streams 16
和 --vfs-read-chunk-size 4M
。在对 AWS S3 的测试中,性能大致与 --vfs-read-chunk-streams
的设置成正比。
类似的设置也适用于高延迟链接,但根据延迟情况,可能需要更多的 --vfs-read-chunk-streams
才能获得较高的吞吐量。
VFS 性能
可以出于性能或其他原因使用这些标志来启用/禁用 VFS 的某些功能。另请参阅分块读取功能。
特别是 S3 和 Swift 后端,使用 --no-modtime
标志(或者使用 --use-server-modtime
以获得略有不同的效果)会有很大的性能提升,因为每次读取修改时间都会产生一次事务。
--no-checksum 上传/下载时不比较校验和。
--no-modtime 不读取/写入修改时间(可以加快速度)。
--no-seek 不允许在文件中进行定位操作。
--read-only 仅允许只读访问。
有时 rclone 会接收到乱序的读取或写入请求。与其进行定位操作,rclone 会等待一小段时间,以等待按顺序的读取或写入请求到来。这些标志仅在不使用磁盘缓存文件时才会生效。
--vfs-read-wait duration 在进行定位操作之前,等待按顺序读取的时间(默认值:20ms)
--vfs-write-wait duration 在给出错误之前,等待按顺序写入的时间(默认值:1s)
当使用 VFS 写入缓存(--vfs-cache-mode
的值为 writes 或 full)时,可以设置全局标志 --transfers
来调整从缓存中并行上传修改后文件的数量(相关的全局标志 --checkers
对 VFS 没有影响)。
--transfers int 并行进行的文件传输数量(默认值:4)
符号链接
默认情况下,VFS 不支持符号链接。但是,可以使用以下任一标志来启用此功能:
--links 将符号链接转换为带有 `.rclonelink` 扩展名的普通文件,反之亦然。
--vfs-links 为 VFS 将符号链接转换为带有 `.rclonelink` 扩展名的普通文件,反之亦然。
由于大多数云存储系统不直接支持符号链接,rclone 会将符号链接存储为带有特殊扩展名的普通文件。因此,一个看起来是符号链接的文件 link-to-file.txt
在云存储中会被存储为 link-to-file.txt.rclonelink
,其内容将是符号链接目标的路径。
请注意,--links
会在 rclone 全局范围内启用符号链接转换 - 这包括任何支持该概念的后端(例如本地后端)。--vfs-links
仅为 VFS 层启用此功能。
此方案与使用 –local-links 标志的本地后端所使用的方案兼容。
--vfs-links
标志是为 rclone mount
、rclone nfsmount
和 rclone serve nfs
设计的。
目前尚未对其他 rclone serve
命令进行测试。
当前实现的一个限制是,它期望调用者解析子符号链接。例如,给定以下目录树
.
├── dir
│ └── file.txt
└── linked-dir -> dir
VFS 能够正确解析 linked-dir
,但无法正确解析 linked-dir/file.txt
。对于经过测试的命令而言,这并非问题,但对于其他命令可能会有影响。
注意,符号链接支持存在一个悬而未决的问题 问题 #8245,当符号链接被移动到存在同名文件的目录中时(反之亦然),会创建重复文件。
VFS 大小写敏感性
Linux 文件系统是区分大小写的:两个文件可以仅在大小写上不同,并且在打开文件时必须使用确切的大小写。
现代 Windows 系统中的文件系统不区分大小写,但会保留大小写:尽管可以使用任意大小写来打开现有文件,但创建文件时使用的精确大小写会被保留,并且可供程序查询。同一目录中不允许存在仅大小写不同的两个文件。
通常,macOS 上的文件系统不区分大小写。虽然可以将 macOS 文件系统设置为区分大小写,但这并非默认设置。
--vfs-case-insensitive
VFS 标志控制 rclone 如何处理这两种情况。如果其值为 “false”,rclone 会按原样将文件名传递给远程存储。如果该标志为 “true”(或在命令行中不带值出现),rclone 可能会按如下所述进行 “修正”。
用户可能会指定一个与远程存储上存储的大小写不同的文件名来进行打开、删除、重命名等操作。如果参数引用的是一个与现有文件名完全相同的文件,那么磁盘上现有文件的大小写将被使用。然而,如果没有找到完全相同名称的文件,但存在仅大小写不同的名称,rclone 会自动修正该名称。这种修正仅在请求现有文件时发生。rclone 新创建的文件名的大小写敏感性由底层远程存储控制。
请注意,运行 rclone 的操作系统(目标)的大小写敏感性可能与 rclone 呈现的文件系统(源)的大小写敏感性不同。该标志控制是否进行 “修正” 以满足目标的要求。
如果命令行中未提供该标志,则其默认值取决于 rclone 运行的操作系统:在 Windows 和 macOS 上为 “true”,其他情况下为 “false”。如果该标志不带值提供,则其值为 “true”。
--no-unicode-normalization
标志控制是否对那些在 Unicode 方面 规范等效 但不同的文件名进行类似的 “修正”。Unicode 规范化对于 macOS 用户特别有用,因为 macOS 更喜欢使用 NFD 形式,而大多数其他平台使用 NFC 形式。因此,强烈建议在 macOS 上保持默认值 false
,以避免编码兼容性问题。
在(可能不太可能)对大小写和 Unicode 进行规范化后,目录中存在多个重复文件名的情况下,--vfs-block-norm-dupes
标志允许隐藏这些重复项。这会带来性能上的权衡,因为 rclone 在列出目录时必须扫描整个目录以查找重复项。因此,如果不需要,建议禁用此功能。但是,macOS 用户可能希望考虑使用它,否则,如果远程目录中同时包含同一文件名的 NFC 和 NFD 版本,将会出现一种奇怪的情况:该文件的两个版本在挂载点中都可见,并且都看起来可以编辑,然而,编辑任何一个版本实际上都会导致只有 NFD 版本在底层被编辑。--vfs-block-norm-dupes
通过检测这种情况、隐藏重复项并记录错误来避免这种混淆,类似于 rclone sync
中的处理方式。
VFS 磁盘选项
此标志允许你手动设置文件系统的统计信息。当这些统计信息无法自动正确读取时,这可能会很有用。
--vfs-disk-space-total-size 手动设置磁盘总空间大小(示例:256G,默认值:-1)
替代的已使用字节报告方式
一些后端,尤其是 S3,不会报告已使用的字节数。如果你在对文件系统运行 df
命令时需要此信息可用,请将 --vfs-used-is-size
标志传递给 rclone。
设置此标志后,rclone 不会依赖后端来报告此信息,而是会像 rclone size
一样扫描整个远程存储,并自行计算总使用空间。
警告:与 rclone size
不同,此标志会忽略过滤器以确保结果准确。然而,这非常低效,可能会导致大量的 API 调用,从而产生额外费用。请将其作为最后的手段使用,并且仅在启用缓存的情况下使用。
rclone serve s3 remote:path [flags]
Options
--addr stringArray 要绑定服务器的 IP 地址:端口、:端口 或者 [unix://]/路径/到/套接字 (默认值为 [127.0.0.1:8080])
--allow-origin string 允许跨域请求(CORS)执行的源
--auth-key stringArray 为 v4 授权设置密钥对:访问密钥 ID, 秘密访问密钥
--auth-proxy string 用于根据认证信息创建后端的程序
--baseurl string URL 的前缀 - 留空则使用根路径
--cert string TLS PEM 公钥证书文件的路径(也可以包含中间/CA 证书)
--client-ca string 用于验证客户端的 TLS PEM CA 文件的路径,该文件包含证书颁发机构
--dir-cache-time Duration 目录条目缓存的时间(默认值为 5 分钟)
--dir-perms FileMode 目录权限(默认值为 777)
--etag-hash string 用于 ETag 的哈希算法,或者设置为 auto 或留空以禁用(默认值为 "MD5")
--file-perms FileMode 文件权限(默认值为 666)
--force-path-style 如果为 true 则使用路径样式访问,如果为 false 则使用虚拟主机样式访问(默认值为 true)
--gid uint32 覆盖文件系统设置的 gid 字段(在 Windows 上不支持)(默认值为 1000)
-h, --help s3 命令的帮助信息
--htpasswd string htpasswd 文件 - 如果未提供则不进行认证
--key string TLS PEM 私钥文件的路径
--link-perms FileMode 链接权限(默认值为 666)
--max-header-bytes int 请求头的最大大小(默认值为 4096)
--min-tls-version string 可接受的最小 TLS 版本(默认值为 "tls1.0")
--no-checksum 上传/下载时不比较校验和
--no-cleanup 删除对象后不清理空文件夹
--no-modtime 不读取/写入修改时间(可以加快速度)
--no-seek 不允许在文件中进行定位操作
--pass string 认证密码
--poll-interval Duration 轮询更改的间隔时间,必须小于目录缓存时间,仅适用于支持的远程存储(设置为 0 以禁用)(默认值为 1 分钟)
--read-only 仅允许只读访问
--realm string 认证领域
--salt string 密码哈希盐值(默认值为 "dlPL2MqE")
--server-read-timeout Duration 服务器读取数据的超时时间(默认值为 1 小时)
--server-write-timeout Duration 服务器写入数据的超时时间(默认值为 1 小时)
--uid uint32 覆盖文件系统设置的 uid 字段(在 Windows 上不支持)(默认值为 1000)
--umask FileMode 覆盖文件系统设置的权限位(在 Windows 上不支持)(默认值为 002)
--user string 认证用户名
--vfs-block-norm-dupes 如果同一目录中存在重复的文件名(规范化后),记录错误并隐藏重复项(可能会有性能开销)
--vfs-cache-max-age Duration 缓存中对象自上次访问以来的最大时间(默认值为 1 小时)
--vfs-cache-max-size SizeSuffix 缓存中对象的最大总大小(默认值为无限制)
--vfs-cache-min-free-space SizeSuffix 包含缓存的磁盘上的目标最小可用空间(默认值为无限制)
--vfs-cache-mode CacheMode 缓存模式:off|minimal|writes|full(默认值为 off)
--vfs-cache-poll-interval Duration 轮询缓存以查找过期对象的时间间隔(默认值为 1 分钟)
--vfs-case-insensitive 如果找不到文件名,查找不区分大小写的匹配项
--vfs-disk-space-total-size SizeSuffix 指定磁盘的总空间(默认值为无限制)
--vfs-fast-fingerprint 使用快速(不太准确)的指纹进行更改检测
--vfs-links 为 VFS 将符号链接转换为带有 '.rclonelink' 扩展名的普通文件,反之亦然
--vfs-read-ahead SizeSuffix 使用 full 缓存模式时,在 --buffer-size 基础上额外预读的字节数
--vfs-read-chunk-size SizeSuffix 分块读取源对象(默认值为 128Mi)
--vfs-read-chunk-size-limit SizeSuffix 如果大于 --vfs-read-chunk-size,则每次读取块后将块大小加倍,直到达到限制('off' 表示无限制)(默认值为无限制)
--vfs-read-chunk-streams int 同时进行读取的并行流数量
--vfs-read-wait Duration 在进行定位操作之前,等待按顺序读取的时间(默认值为 20 毫秒)
--vfs-refresh 启动时在后台递归刷新目录缓存
--vfs-used-is-size rclone size 使用 rclone size 算法计算已使用空间
--vfs-write-back Duration 使用缓存时,文件最后一次使用后写回的时间(默认值为 5 秒)
--vfs-write-wait Duration 在给出错误之前,等待按顺序写入的时间(默认值为 1 秒)
接下来将介绍与其他命令共享的选项。 有关此处未列出的全局选项,请参阅 全局标志页面。
Filter Options
Flags for filtering directory listings
--delete-excluded 删除目标端中被排除在同步之外的文件
--exclude stringArray 排除符合指定模式的文件
--exclude-from stringArray 从文件中读取要排除的文件模式(使用 - 从标准输入读取)
--exclude-if-present stringArray 如果指定文件名存在,则排除该目录
--files-from stringArray 从文件中读取源文件名列表(使用 - 从标准输入读取)
--files-from-raw stringArray 从文件中读取源文件名列表,不对行进行任何处理(使用 - 从标准输入读取)
-f, --filter stringArray 添加文件过滤规则
--filter-from stringArray 从文件中读取文件过滤模式(使用 - 从标准输入读取)
--ignore-case 在过滤时忽略大小写(大小写不敏感)
--include stringArray 包含符合指定模式的文件
--include-from stringArray 从文件中读取要包含的文件模式(使用 - 从标准输入读取)
--max-age Duration 仅传输比指定时间(以秒或后缀 ms|s|m|h|d|w|M|y 表示)更新的文件(默认关闭)
--max-depth int 如果设置,则将递归深度限制为此值(默认 -1)
--max-size SizeSuffix 仅传输小于指定大小(以 KiB 或后缀 B|K|M|G|T|P 表示)的文件(默认关闭)
--metadata-exclude stringArray 排除符合指定模式的元数据
--metadata-exclude-from stringArray 从文件中读取要排除的元数据模式(使用 - 从标准输入读取)
--metadata-filter stringArray 添加元数据过滤规则
--metadata-filter-from stringArray 从文件中读取元数据过滤模式(使用 - 从标准输入读取)
--metadata-include stringArray 包含符合指定模式的元数据
--metadata-include-from stringArray 从文件中读取要包含的元数据模式(使用 - 从标准输入读取)
--min-age Duration 仅传输比指定时间(以秒或后缀 ms|s|m|h|d|w|M|y 表示)更旧的文件(默认关闭)
--min-size SizeSuffix 仅传输大于指定大小(以 KiB 或后缀 B|K|M|G|T|P 表示)的文件(默认关闭)
参见
- rclone serve - 通过协议为远程服务器提供服务。