
如何用 rclone union 后端把多个网盘合并成一个统一视图并选择写入策略【免费下载链接】rclonersync for cloud storage - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files项目地址: https://gitcode.com/GitHub_Trending/rc/rclone当你同时持有几个网盘或本地目录希望用一个 remote 名称就能列出、读取和写入这些远端的内容时rclone 的union后端v1.44 引入可以把多个上游远端合并成一个统一视图。完成本任务后你可以用一条rclone lsd remote:命令列出所有上游的顶层目录用一条rclone copy命令把新文件写入指定的上游并且通过action_policy、create_policy、search_policy三个策略项决定写入落到哪个上游。本文的操作路径来自 union 后端文档。用 rclone config 配置 union remote先确认所有要合并的上游远端都已经配置完成然后运行交互式配置rclone config在菜单中选择n) New remote输入名称后在Type of storage to configure中填入union。文档给出的交互过程节选如下epall、epmfs、ff 分别为三项策略的默认值直接回车即采用Type of storage to configure. Choose a number from below, or type in your own value [snip] XX / Union merges the contents of several remotes \ union [snip] Storage union List of space separated upstreams. Can be upstreama:test/dir upstreamb:, \upstreama:test/space:ro dir\ upstreamb:, etc. Enter a string value. Press Enter for the default (). upstreams remote1:dir1 remote2:dir2 remote3:dir3 Policy to choose upstream on ACTION class. Enter a string value. Press Enter for the default (epall). action_policy Policy to choose upstream on CREATE class. Enter a string value. Press Enter for the default (epmfs). create_policy Policy to choose upstream on SEARCH class. Enter a string value. Press Enter for the default (ff). search_policy Cache time of usage and free space (in seconds). This option is only useful when a path preserving policy is used. Enter a signed integer. Press Enter for the default (120). cache_time其中upstreams是空格分隔的上游列表可以写本地路径也可以写已配置的远端例如remote1:dir1 remote2:dir2 remote3:dir3。上游路径中可以直接带子目录例如mydrive:private/backup。此时对 union remote 的操作会映射到该子目录rclone mkdir backup:desktop与rclone mkdir mydrive:private/backup/desktop完全等价。上游路径中的..段没有特殊处理按普通路径段透传例如backup:../desktop等同于mydrive:private/backup/../desktop。带空格的上游需要整体加引号文档示例格式为upstreama:test/space:ro dir upstreamb:。用 :ro、:nc、:writeback 标记上游的写入行为每个上游末尾可以追加标签来控制写入行为这直接影响后续策略的过滤规则标签含义:ro只读文件只从这里读取从不写入:nc不创建不在此创建新的文件或目录:writeback在其它远端找到的文件会写回这里见后文 writeback 小节例如remote:directory/subdirectory:ro表示该上游只读。过滤规则在 union 文档 中明确给出search 类策略不做任何过滤action 类策略会过滤掉标记为:ro的远端create 类策略会过滤掉标记为:ro或:nc的远端如果所有远端都被过滤掉操作会返回错误。选择写入策略action / create / search 三类union 后端把所有操作分成三类每一类各自分配一个策略策略决定执行该操作时选用哪个上游类别说明覆盖的操作action写入已存在的文件move、rmdir、rmdirs、delete、purge以及 copy、sync 作为目标且文件已存在时create创建不存在的文件copy、sync 作为目标且文件不存在时search读取和列出文件ls、lsd、lsl、cat、md5sum、sha1sum以及 copy、sync 作为源时N/A不适用策略size、about策略分两种基本类型以ep开头的是path preservingexisting path只考虑相对路径已经存在的上游非 path preserving 策略会在目标上游中按需创建路径。可选策略及文档中的描述如下策略描述allsearch 与 action 同类别等同 epallcreate 类别作用于所有上游epallsearch按配置顺序取相对路径存在的第一项action作用于所有找到的create作用于相对路径存在的所有上游epff按上游响应时间取相对路径存在的第一项eplfs在相对路径存在的上游中选剩余空间最少者eplus在相对路径存在的上游中已用空间最少者eplno在相对路径存在的上游中对象数量最少者epmfs在相对路径存在的上游中剩余空间最多者create_policy 默认值eprand调用 epall 后随机返回一个上游ffsearch/action 同 epffcreate 取按响应时间先返回的上游search_policy 默认值lfs / lus / lno / mfs分别按剩余空间最少 / 已用空间最少 / 对象数最少 / 剩余空间最多选择上游newest选 mtime 最大的文件或目录rand调用 all 后随机返回一个上游配置项、环境变量和默认值来自 union 文档的标准选项配置项环境变量默认值upstreamsRCLONE_UNION_UPSTREAMS必填action_policyRCLONE_UNION_ACTION_POLICYepallcreate_policyRCLONE_UNION_CREATE_POLICYepmfssearch_policyRCLONE_UNION_SEARCH_POLICYffcache_timeRCLONE_UNION_CACHE_TIME120秒仅在使用 path preserving 策略时有效min_free_space高级RCLONE_UNION_MIN_FREE_SPACE1Gi剩余空间低于该值的远端不参与 lfs/eplfs 策略使用基于配额的策略前先确认上游支持对应字段lfs、eplfs、mfs、epmfs、lus、eplus、lno、eplno 这些策略依赖配额信息只在你的上游支持相应字段时才应使用策略所需字段lfs、eplfsFreemfs、epmfsFreelus、eplusUsedlno、eplnoObjects检查方式是对每个上游运行rclone about remote: [flags]看输出中是否存在所需字段。rclone about 文档 展示了典型输出文档示例数值因远端而异Total: 17 GiB Used: 7.444 GiB Free: 1.315 GiB Trashed: 100.000 MiB Other: 8.241 GiB字段说明中Free是本用户可用空间Used是已用空间Objects是对象总数并非所有后端都打印所有字段后端未提供的信息不会包含在输出里。另外 overview 文档 明确说明没有 about 能力的后端无法确定剩余空间因此不能作为 union remote 中使用mfsmost free space策略的成员。若你的上游属于这类后端应选择ff、epall、newest、rand等不依赖配额的策略。验证统一视图是否生效配置完成后按文档给出的命令逐个验证列出remote1:dir1、remote2:dir2、remote3:dir3三个上游的顶层目录rclone lsd remote:列出三个上游的所有文件rclone ls remote:把另一个本地目录复制进 union文档示例为rclone copy C:\source remote:source文档说明这条复制会落到remote3:dir3。这里不要把它理解为永远落到最后一个上游——写入目标是create策略决定的示例环境下策略行为正好选中remote3:dir3如果你修改了create_policy落点会按策略规则变化。如果你给某个上游加了子目录前缀如mydrive:private/backup可以用mkdir验证路径映射执行rclone mkdir backup:desktop然后在mydrive下确认private/backup/desktop已创建两者应当一致。可选分支用 :writeback 搭一个简单的缓存把:writeback标签加在一个上游上可以构造简单的缓存系统。union 文档 给出的配置示例[union] type union action_policy all create_policy all search_policy ff upstreams /local:writeback remote:dir其行为读取文件时如果文件在remote:dir而不在/localrclone 会先把整个文件复制到/local再返回/local中该文件的引用。复制使用等同rclone copy的方式配置了--multi-thread-streams时会使用它所有复制都会记录 INFO 级别日志写入文件时会同时写入remote:dir和/localupstreams可以加任意多个远端但:writeback标签只能有一个rclone 除了把文件写回之外不会管理:writeback远端过期清理、控制大小需要你自行处理。限制与边界size、about两个操作在 union 下标记为 N/A不参与任何策略。策略行为受标签过滤约束action 排除:rocreate 排除:ro与:nc全部被过滤时操作返回错误。上游 metadata 方面union 支持底层远端所支持的任意 metadata 的读写见 union 文档 Metadata 一节。cache_time只对 path preserving 策略有效默认 120 秒用于缓存用量与剩余空间查询结果。完成上述配置与验证后你就可以把remote:当作单一远端使用写入落点由三类策略分别控制后续如需调整只需改action_policy/create_policy/search_policy三个配置项或对应的RCLONE_UNION_*环境变量。【免费下载链接】rclonersync for cloud storage - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files项目地址: https://gitcode.com/GitHub_Trending/rc/rclone创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考