rclone serve sftp

rclone serve sftp

通过 SFTP 提供远程服务。

概要

运行一个 SFTP 服务器,通过 SFTP 提供远程服务。这可以与 SFTP 客户端一起使用,或者你可以创建一个类型为 sftp 的远程连接来使用它。

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

服务器将响应少量的 shell 命令,主要是 md5sumsha1sumdf,这使得它在从 SFTP 远程连接访问时能够提供校验和支持和关于功能。

请注意,此服务器使用标准的 32 KiB 数据包有效负载大小,这意味着你不能将客户端配置为期望其他大小,例如,在 SFTP 远程连接上使用 chunk_size 选项时。

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

--bwlimit 标志将在文件传输时生效。 使用 --stats 来控制统计信息的打印。

你必须提供某种身份验证方式,可以是 --user/--pass、授权密钥文件(使用 --authorized-keys 指定位置,默认与 SSH 相同)、--auth-proxy,或者设置 --no-auth 标志以在登录时不进行身份验证。

如果你不提供主机 --key,rclone 将生成 RSA、ECDSA 和 Ed25519 变体,并将它们缓存在 rclone 的缓存目录(请参阅 rclone help flags cache-dir)中的 “serve-sftp” 目录中,以供后续使用。

默认情况下,服务器绑定到 localhost:2022。如果你希望它能从外部访问,可以提供 --addr :2022 这样的参数。

此功能还支持使用套接字激活方式运行,在这种情况下,它将监听传递的第一个文件描述符(FD)。 可以使用 .socket.service 单元文件进行配置,详情请参阅 https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html

可以使用 systemd-socket-activate 命令临时测试套接字激活功能:

systemd-socket-activate -l 2222 -- rclone serve sftp :local:vfs/

这将在第一次通过 TCP 连接到端口 2222 时激活 rclone。

请注意,--vfs-cache-mode off 的默认设置对于 rclone 的 SFTP 后端是合适的,但对于其他 SFTP 客户端可能不适用。

如果指定了 --stdio,rclone 将通过标准输入输出(stdio)提供 SFTP 服务,这可以通过 ~/.ssh/authorized_keyssshd 一起使用,例如:

restrict,command="rclone serve sftp --stdio ./photos" ssh-rsa ...

在客户端使用 --stdio 时,需要设置 --transfers 1。 否则,OpenSSH 会启动多个 rclone 服务器实例,这可能会导致 “传输时损坏” 错误。这是因为客户端会随意选择要发送命令的服务器,而各个服务器对文件系统状态的视图不同。

authorized_keys 中的 “restrict” 会阻止使用 SHA1SUMMD5SUM。不使用 “restrict” 并使用 --sftp-path-override 来启用校验和功能是可行的,但安全性较低,在这种情况下,你可以使用 OpenSSH 提供的 SFTP 服务器。

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           缓存中对象自上次访问以来的最大时间(默认 1h0m0s)
--vfs-cache-max-size SizeSuffix        缓存中对象的最大总大小(默认 off)
--vfs-cache-min-free-space SizeSuffix  缓存所在磁盘的目标最小可用空间(默认 off)
--vfs-cache-poll-interval duration     轮询缓存以查找过期对象的间隔时间(默认 1m0s)
--vfs-write-back duration              使用缓存时,文件最后一次使用后写回的时间(默认 5s)

如果使用 -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_APPENDO_TRUNC
  • 如果上传失败,无法重试

–vfs-cache-mode minimal

这种模式与 “off” 模式非常相似,除了以读写模式打开的文件将被缓冲到磁盘。这意味着以写入模式打开的文件将更具兼容性,但使用的磁盘空间最少。

以下操作仍然无法执行:

  • 以只写模式打开的文件不能进行定位操作
  • 以写入模式打开现有文件时必须设置 O_TRUNC
  • 以只写模式打开的文件将忽略 O_APPENDO_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  块大小翻倍的最大限制(默认 off)
--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 值为 writesfull)时,可以设置全局标志 --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 命令时需要此信息可用,请将 --vfs-used-is-size 标志传递给 rclone。

设置此标志后,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 sftp remote:path [flags]

Options

      --addr string                            IPaddress:Port or :Port to bind server to (default "localhost:2022")
      --auth-proxy string                      A program to use to create the backend from the auth
      --authorized-keys string                 Authorized keys file (default "~/.ssh/authorized_keys")
      --dir-cache-time Duration                Time to cache directory entries for (default 5m0s)
      --dir-perms FileMode                     Directory permissions (default 777)
      --file-perms FileMode                    File permissions (default 666)
      --gid uint32                             Override the gid field set by the filesystem (not supported on Windows) (default 1000)
  -h, --help                                   help for sftp
      --key stringArray                        SSH private host key file (Can be multi-valued, leave blank to auto generate)
      --link-perms FileMode                    Link permissions (default 666)
      --no-auth                                Allow connections with no authentication if set
      --no-checksum                            Don't compare checksums on up/download
      --no-modtime                             Don't read/write the modification time (can speed things up)
      --no-seek                                Don't allow seeking in files
      --pass string                            Password for authentication
      --poll-interval Duration                 Time to wait between polling for changes, must be smaller than dir-cache-time and only on supported remotes (set 0 to disable) (default 1m0s)
      --read-only                              Only allow read-only access
      --stdio                                  Run an sftp server on stdin/stdout
      --uid uint32                             Override the uid field set by the filesystem (not supported on Windows) (default 1000)
      --umask FileMode                         Override the permission bits set by the filesystem (not supported on Windows) (default 002)
      --user string                            User name for authentication
      --vfs-block-norm-dupes                   If duplicate filenames exist in the same directory (after normalization), log an error and hide the duplicates (may have a performance cost)
      --vfs-cache-max-age Duration             Max time since last access of objects in the cache (default 1h0m0s)
      --vfs-cache-max-size SizeSuffix          Max total size of objects in the cache (default off)
      --vfs-cache-min-free-space SizeSuffix    Target minimum free space on the disk containing the cache (default off)
      --vfs-cache-mode CacheMode               Cache mode off|minimal|writes|full (default off)
      --vfs-cache-poll-interval Duration       Interval to poll the cache for stale objects (default 1m0s)
      --vfs-case-insensitive                   If a file name not found, find a case insensitive match
      --vfs-disk-space-total-size SizeSuffix   Specify the total space of disk (default off)
      --vfs-fast-fingerprint                   Use fast (less accurate) fingerprints for change detection
      --vfs-links                              Translate symlinks to/from regular files with a '.rclonelink' extension for the VFS
      --vfs-read-ahead SizeSuffix              Extra read ahead over --buffer-size when using cache-mode full
      --vfs-read-chunk-size SizeSuffix         Read the source objects in chunks (default 128Mi)
      --vfs-read-chunk-size-limit SizeSuffix   If greater than --vfs-read-chunk-size, double the chunk size after each chunk read, until the limit is reached ('off' is unlimited) (default off)
      --vfs-read-chunk-streams int             The number of parallel streams to read at once
      --vfs-read-wait Duration                 Time to wait for in-sequence read before seeking (default 20ms)
      --vfs-refresh                            Refreshes the directory cache recursively in the background on start
      --vfs-used-is-size rclone size           Use the rclone size algorithm for Used size
      --vfs-write-back Duration                Time to writeback files after last use when using cache (default 5s)
      --vfs-write-wait Duration                Time to wait for in-sequence write before giving error (default 1s)

Options shared with other commands are described next. See the global flags page for global options not listed here.

Filter Options

Flags for filtering directory listings

      --addr string                            绑定服务器的 IP 地址和端口,格式为 IPaddress:Port 或 :Port(默认值为 "localhost:2022")
      --auth-proxy string                      用于根据认证信息创建后端的程序
      --authorized-keys string                 授权密钥文件(默认值为 "~/.ssh/authorized_keys")
      --dir-cache-time Duration                目录条目缓存的时间(默认值为 5 分 0 秒)
      --dir-perms FileMode                     目录权限(默认值为 777)
      --file-perms FileMode                    文件权限(默认值为 666)
      --gid uint32                             覆盖文件系统设置的 gid 字段(Windows 系统不支持)(默认值为 1000)
  -h, --help                                   sftp 命令的帮助信息
      --key stringArray                        SSH 私钥主机密钥文件(可指定多个值,留空则自动生成)
      --link-perms FileMode                    链接权限(默认值为 666)
      --no-auth                                若设置该选项,则允许无认证的连接
      --no-checksum                            上传/下载时不比较校验和
      --no-modtime                             不读取/写入修改时间(可加快操作速度)
      --no-seek                                不允许在文件中进行定位操作
      --pass string                            用于认证的密码
      --poll-interval Duration                 轮询更改的间隔时间,必须小于 dir-cache-time,且仅适用于支持的远程存储(设置为 0 可禁用)(默认值为 1 分 0 秒)
      --read-only                              仅允许只读访问
      --stdio                                  在标准输入/输出上运行 SFTP 服务器
      --uid uint32                             覆盖文件系统设置的 uid 字段(Windows 系统不支持)(默认值为 1000)
      --umask FileMode                         覆盖文件系统设置的权限位(Windows 系统不支持)(默认值为 002)
      --user string                            用于认证的用户名
      --vfs-block-norm-dupes                   若同一目录中存在规范化后重复的文件名,则记录错误并隐藏重复项(可能会影响性能)
      --vfs-cache-max-age Duration             缓存中对象自上次访问以来的最大时间(默认值为 1 小时 0 分 0 秒)
      --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 分 0 秒)
      --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 秒)

参见

  • rclone serve - 通过协议为远程服务器提供服务。