rclone serve webdav

rclone serve webdav

通过WebDAV协议提供远程路径服务。

概述

运行一个基本的WebDAV服务器,通过HTTP协议使用WebDAV协议为远程路径提供服务。可以使用WebDAV客户端、Web浏览器查看,也可以创建一个WebDAV类型的远程路径来读写数据。

WebDAV选项

–etag-hash

此选项控制ETag头信息。如果不使用此标志,ETag将基于对象的修改时间和大小。

如果将此标志设置为“auto”,rclone将选择后端支持的第一个哈希算法,也可以使用指定的哈希算法,如“MD5”或“SHA-1”。使用 hashsum 命令查看完整列表。

在Windows上访问WebDAV

在Windows上可以将WebDAV共享文件夹映射为驱动器,但默认设置会阻止此操作。 Windows使用不安全的基本身份验证连接服务器时会失败。 甚至不会显示任何登录对话框。Windows要求使用SSL / HTTPS连接与基本身份验证配合使用。 如果尝试通过“添加网络位置向导”进行连接,会收到以下错误: “你输入的文件夹似乎无效。请选择其他文件夹。” 但是,如果在客户端计算机上设置以下注册表项,仍然可以进行连接: 将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\BasicAuthLevel设置为2。 BasicAuthLevel可以设置为以下值: 0 - 禁用基本身份验证 1 - 仅对SSL连接启用基本身份验证 2 - 对SSL连接和非SSL连接都启用基本身份验证 如有必要,将FileSizeLimitInBytes增加到更高的值。 导航到“服务”界面,然后重启WebClient服务。

在WebDAV上访问Office应用程序

导航到以下注册表路径HKEY_CURRENT_USER\Software\Microsoft\Office[14.0/15.0/16.0]\Common\Internet 创建一个新的DWORD值BasicAuthLevel,值为2。 0 - 禁用基本身份验证 1 - 仅对SSL连接启用基本身份验证 2 - 对SSL和非SSL连接都启用基本身份验证

https://learn.microsoft.com/en-us/office/troubleshoot/powerpoint/office-opens-blank-from-sharepoint

通过Unix套接字提供服务

可以通过Unix套接字提供WebDAV服务,如下所示:

rclone serve webdav --addr unix:///tmp/my.socket remote:path

并使用rclone和WebDAV后端进行连接,如下所示:

rclone --webdav-unix-socket /tmp/my.socket --webdav-url http://localhost lsf :webdav:

请注意,HTTP协议没有身份验证 - 这通常通过套接字的权限来实现。

服务器选项

使用 --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成为一个套接字激活的服务。 可以使用.socket和.service单元文件进行配置,如https://www.freedesktop.org/software/systemd/man/latest/systemd.socket.html中所述。

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

   systemd-socket-activate -l 8000 -- rclone serve

这将在首次通过TCP连接到端口8000时激活rclone的套接字。

模板

--template 允许用户为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   缓存目录条目的时间(默认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_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调用或额外的工作)。

例如,hashlocalsftp 后端读取速度较慢,因为它们必须读取整个文件并进行哈希计算,而 modtimes3swiftftpqinqstor 后端读取速度较慢,因为它们需要进行额外的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 值为 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。这对于已测试的命令不是问题,但对于其他命令可能是问题。

注意 符号链接支持存在一个未解决的问题 问题 #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的协议,输入在标准输入,输出在标准输出。

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

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

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

生成的此配置必须有这个额外的参数

  • _root - 后端要使用的根路径

并且可能有这个参数

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

如果客户端使用密码身份验证,代理进程的输入(在标准输入)将类似于这样:

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

如果客户端使用公钥身份验证,代理进程的输入(在标准输入)将类似于这样:

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

作为示例,在标准输出返回以下内容

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

这意味着将为输出中返回的 userpass/public_key 动态创建一个SFTP后端,连接到给定的主机。请注意,由于 _obscure 设置为 pass,rclone将在创建后端之前模糊处理 pass 参数(这是SFTP后端所需的)。

该程序可以以任何方式操作提供的 user,例如,要代理到多个不同的SFTP后端,可以使 user[email protected],然后在输出中将 host 设置为 example.com,用户设置为 user。为了安全起见,可能需要将 host 限制在一个有限的列表中。

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

这可用于构建对rclone支持的任何类型后端的通用代理。

rclone serve webdav remote:path [flags]

Options

      --addr stringArray                       要绑定服务器的 IP 地址:端口、:端口 或者 [unix://]/path/to/socket(默认值为 [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                目录条目缓存的时间(默认值为 5m0s)
      --dir-perms FileMode                     目录权限(默认值为 777)
      --disable-dir-list                       禁用对目录的 GET 请求的 HTML 目录列表
      --etag-hash string                       用于 ETag 的哈希算法,或者设置为 auto 自动选择,留空则禁用
      --file-perms FileMode                    文件权限(默认值为 666)
      --gid uint32                             覆盖文件系统设置的 gid 字段(Windows 不支持)(默认值为 1000)
  -h, --help                                   显示 webdav 命令的帮助信息
      --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                 轮询更改之间的等待时间,必须小于 dir-cache-time,仅适用于支持的远程(设置为 0 可禁用)(默认值为 1m0s)
      --read-only                              仅允许只读访问
      --realm string                           认证领域
      --salt string                            密码哈希盐(默认值为 "dlPL2MqE")
      --server-read-timeout Duration           服务器读取数据的超时时间(默认值为 1h0m0s)
      --server-write-timeout Duration          服务器写入数据的超时时间(默认值为 1h0m0s)
      --template string                        用户指定的模板
      --uid uint32                             覆盖文件系统设置的 uid 字段(Windows 不支持)(默认值为 1000)
      --umask FileMode                         覆盖文件系统设置的权限位(Windows 不支持)(默认值为 002)
      --user string                            用于认证的用户名
      --vfs-block-norm-dupes                   如果同一目录中存在重复的文件名(归一化后),记录错误并隐藏重复项(可能会有性能开销)
      --vfs-cache-max-age Duration             缓存中对象自上次访问以来的最大时间(默认值为 1h0m0s)
      --vfs-cache-max-size SizeSuffix          缓存中对象的最大总大小(默认值为 off)
      --vfs-cache-min-free-space SizeSuffix    包含缓存的磁盘上的目标最小可用空间(默认值为 off)
      --vfs-cache-mode CacheMode               缓存模式:off|minimal|writes|full(默认值为 off)
      --vfs-cache-poll-interval Duration       轮询缓存以查找陈旧对象的间隔时间(默认值为 1m0s)
      --vfs-case-insensitive                   如果未找到文件名,查找不区分大小写的匹配项
      --vfs-disk-space-total-size SizeSuffix   指定磁盘的总空间(默认值为 off)
      --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' 表示无限制)(默认值为 off)
      --vfs-read-chunk-streams int             同时读取的并行流数量
      --vfs-read-wait Duration                 在进行查找操作之前等待按顺序读取的时间(默认值为 20ms)
      --vfs-refresh                            在启动时在后台递归刷新目录缓存
      --vfs-used-is-size rclone size           使用 rclone size 算法计算已使用空间大小
      --vfs-write-back Duration                使用缓存时,文件最后一次使用后写回的时间(默认值为 5s)
      --vfs-write-wait Duration                在给出错误之前等待按顺序写入的时间(默认值为 1s)

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

过滤器选项

用于过滤目录列表的标志

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