rclone serve http

rclone serve http

通过 HTTP 提供远程服务。

概要

运行一个基础的 Web 服务器,通过 HTTP 提供远程服务。

你可以在 Web 浏览器中查看,也可以创建一个 http 类型的远程来读取它。

你可以使用过滤标志(例如 --include--exclude)来控制提供哪些内容。

服务器会记录错误信息。使用 -v 选项可以查看访问日志。

文件传输时会遵循 --bwlimit 选项。使用 --stats 选项可以控制统计信息的输出。

服务器选项

使用 --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。

模板

模板 “允许用户为 HTTP 和 WebDAV 服务功能的自定义标记模板。 服务器会导出以下标记 用于服务器页面的模板:

参数 描述
.Name 文件或目录的完整路径。
.Title .Name 对应的目录列表。
.Sort 当前使用的排序方式。可通过 ?sort= 参数进行更改。
排序选项:namedirfirst(目录优先排序)、name(按名称排序)、size(按大小排序)、time(按时间排序)(默认值为 namedirfirst)
.Order 当前使用的排序顺序。可通过 ?order= 参数进行更改。
排序顺序选项:asc(升序)、desc(降序)(默认值为 asc)
.Query 当前未使用。
.Breadcrumb 用于创建相对导航。
– .Link 文本相对于根目录的链接。
– .Text 目录的名称。
.Entries 特定文件或目录的信息。
– .URL 条目的“URL”。
– .Leaf 当前与 ‘URL’ 相同,但旨在仅表示名称。
– .IsDir 布尔值,表示条目是否为目录。
– .Size 条目的大小(以字节为单位)。
– .ModTime 条目的 UTC 时间戳。

服务器还提供了以下函数,以便在模板中使用。这些函数有助于扩展 HTML 动态渲染的选项。它们可用于根据特定条件渲染 HTML。

函数 描述
afterEpoch 返回给定时间自纪元以来的时间。
contains 检查给定字符串中是否存在指定的子字符串。
hasPrefix 检查给定字符串是否以指定的前缀开头。
hasSuffix 检查给定字符串是否以指定的后缀结尾。

身份验证

默认情况下,提供文件服务时无需登录。

你可以使用支持多个用户的 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 来更改默认的密码哈希盐值。

VFS - 虚拟文件系统

此命令使用 VFS 层。它将 rclone 使用的云存储对象转换为更类似于磁盘文件系统的形式。

云存储对象有许多与磁盘文件不同的属性,例如无法扩展它们或对其中间部分进行写入操作,因此 VFS 层必须处理这些问题。由于没有一种通用的正确方法来处理这些问题,下面将介绍各种选项。

VFS 层还实现了一个目录缓存,它将文件和目录的信息(但不包括数据)缓存在内存中。

VFS 目录缓存

使用 --dir-cache-time 标志,你可以控制一个目录在多长时间内被认为是最新的,而无需从后端刷新。通过 VFS 所做的更改将立即显示或使缓存失效。

--dir-cache-time duration   目录条目缓存的时间(默认 5 分钟)
--poll-interval duration    轮询更改的间隔时间。必须小于 `dir-cache-time`,仅适用于支持的远程存储。设置为 0 可禁用(默认 1 分钟)

然而,如果配置的后端不支持轮询更改,那么通过 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 小时)
--vfs-cache-max-size SizeSuffix        缓存中对象的最大总大小(默认无限制)
--vfs-cache-min-free-space SizeSuffix  缓存所在磁盘的目标最小可用空间(默认无限制)
--vfs-cache-poll-interval duration     轮询缓存中过期对象的间隔时间(默认 1 分钟)
--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 的性能将非常差,并且如果检测到这种情况,它将记录一条错误消息。

指纹识别

VFS 的各个部分使用指纹识别来判断本地文件副本相对于远程文件是否发生了变化。指纹信息由以下内容生成:

  • 文件大小
  • 修改时间
  • 哈希值

前提是对象具备这些属性。

在某些后端,读取这些属性的速度较慢(每个对象需要额外的 API 调用或额外的处理工作)。

例如,localsftp 后端的 hash 计算速度较慢,因为它们需要读取整个文件并进行哈希计算;而 s3swiftftpqinqstor 后端的 modtime 读取速度较慢,因为需要额外的 API 调用才能获取。

如果使用 --vfs-fast-fingerprint 标志,rclone 将不会在指纹信息中包含这些耗时的操作。这会降低指纹识别的准确性,但会显著提高速度,并缩短缓存文件的打开时间。

如果在 locals3swift 后端上运行 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 mountrclone nfsmountrclone serve nfs 设计的。

目前尚未对其他 rclone serve 命令进行测试。

当前实现的一个限制是,它期望调用者解析子符号链接。例如,给定以下目录树

.
├── dir
│   └── file.txt
└── linked-dir -> dir

VFS 能够正确解析 linked-dir,但无法解析 linked-dir/file.txt。对于经过测试的命令来说,这不是问题,但对于其他命令可能会有影响。

注意,符号链接支持存在一个未解决的问题 issue #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 命令时需要这些信息可用,可以向 rclone 传递 --vfs-used-is-size 标志。

设置此标志后,rclone 将不再依赖后端报告这些信息,而是会像 rclone size 命令一样扫描整个远程端,并自行计算总使用空间。

警告:与 rclone size 不同,此标志会忽略过滤器,以确保结果准确。然而,这非常低效,可能会产生大量的 API 调用,从而导致额外的费用。请仅在万不得已时使用,并结合缓存使用。

认证代理

如果你提供参数 --auth-proxy /path/to/program,rclone 将使用该程序动态生成后端,然后用于对传入请求进行身份验证。这使用了一种基于简单 JSON 的协议,输入通过标准输入(STDIN),输出通过标准输出(STDOUT)。

请注意--auth-proxy--authorized-keys 不能一起使用,如果设置了 --auth-proxy,授权密钥选项将被忽略。

在 rclone 源代码中有一个示例程序 bin/test_proxy.py

该程序的任务是从输入中获取 userpass,并将其转换为 JSON 格式的后端配置,通过标准输出输出。此配置将添加后端的任何默认参数,但不会使用环境变量或命令行选项中的配置 - 代理程序的任务是创建一个完整的配置。

生成的此配置必须包含以下额外参数:

  • _root - 后端要使用的根目录

并且可以包含以下参数:

  • _obscure - 要模糊处理的参数的逗号分隔字符串

如果客户端使用了密码认证,代理进程的输入(在标准输入上)将类似于以下内容:

{
	"user": "me",
	"pass": "mypassword"
}

如果客户端使用的是公钥身份验证,则输入到 代理进程(在 STDIN 上)的输入将与下面类似:

{
	"user": "me",
	"public_key": "AAAAB3NzaC1yc2EAAAADAQABAAABAQDuwESFdAe14hVS6omeyX7edc...JQdf"
}

例如,在 STDOUT 上返回以下内容

{
	"type": "sftp",
	"_root": "",
	"_obscure": "pass",
	"user": "me",
	"pass": "mypassword",
	"host": "sftp.example.com"
}

这意味着将为输出中返回的 用户 “和 “密码”/“公钥 “的 SFTP 后端。 注意 由于 _obscure被设置为 pass,rclone 将在创建后端之前隐藏 `pass 参数(sftp 后端需要)。

程序可以对提供的 user 进行任何操作,例如 要代理多个不同的 sftp 后端,可以将 用户 “为 “[email protected]”,然后在输出中将 “host “设为 “example.com 然后在输出中将 host 设置为 example.com,将用户设置为 user。 为了安全起见,您可能希望 将 host 限制在一个有限的列表中。

请注意,内部缓存是以 user 为关键的,因此只能将其用于 配置,不要使用 passpublic_key。 这也意味着如果用户的 密码或公钥更改时,缓存需要过期(5 分钟)后才能生效。 才能生效。

这可用于建立通用代理,以访问任何类型的 后台的通用代理。

rclone serve http remote:path [flags]

Options

      --addr stringArray                       要绑定服务器的 IP 地址:端口、:端口 或 [unix://]/路径/到/套接字(默认值为 [127.0.0.1:8080])
      --allow-origin string                    允许跨域请求(CORS)执行的源
      --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)
      --file-perms FileMode                    文件权限(默认值为 666)
      --gid uint32                             覆盖文件系统设置的 gid 字段(Windows 不支持)(默认值为 1000)
  -h, --help                                   http 命令的帮助信息
      --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-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 小时)
      --template string                        用户指定的模板
      --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 秒)

接下来将介绍与其他命令共享的选项。 此处未列出的全局选项,请参阅全局标志页面

过滤器选项

用于过滤目录列表的标志

      --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 - 通过协议为远程服务器提供服务。