rclone sync

rclone sync

使源和目标完全一致,仅修改目标。

概要

将源同步到目标,仅对目标进行更改。通过比较文件大小、修改时间或 MD5 校验和,不会传输源和目标上已存在的相同文件。目标会被更新以匹配源,必要时会删除文件(重复对象除外,见下文)。如果您不想从目标中删除文件,请使用 copy 命令。

重要提示:由于此操作可能导致数据丢失,请先使用 --dry-run--interactive/-i 标志进行测试。

rclone sync --interactive 源 远程:目标

请注意,如果在任何时候出现错误,目标中的文件将不会被删除。重复对象(在支持的存储提供商上具有相同名称的文件)目前也未得到处理。

始终同步的是目录的内容,而不是目录本身。因此,当源路径是一个目录时,复制的是源路径下的内容,而不是目录名和内容。如果不确定,请参阅 copy 命令中的详细解释。

如果目标路径不存在,将创建该路径并将源路径的内容复制到其中。

无法同步有重叠的远程存储。但是,您可以通过过滤规则将目标排除在同步之外,或者在目标目录中放置一个 exclude-if-present 文件,然后将内容同步到源目录内的目标位置。

如果后端支持,Rclone 将同步文件和目录的修改时间。如果需要同步元数据,请使用 --metadata 标志。

请注意,根目录的修改时间和元数据 不会 被同步。有关更多信息,请参阅 https://github.com/rclone/rclone/issues/7652

注意:使用 -P/--progress 标志查看实时传输统计信息。

注意:使用 rclone dedupe 命令处理 “在源/目标中发现重复对象/目录 - 忽略” 错误。有关更多信息,请参阅 此论坛帖子

日志标志

--differ--missing-on-dst--missing-on-src--match--error 标志会将路径逐行写入指定的文件名(如果为 - 则写入标准输出)。下面的帮助文档描述了它们的输出内容。例如,--differ 会将源和目标上都存在但不同的所有路径写入文件。

--combined 标志会写入一个文件(或标准输出),其中包含所有文件路径,前面带有一个符号,后面跟一个空格,再后面是路径,以告知您文件的处理情况。这些类似于 diff 文件。

  • = 路径 表示该路径在源和目标中都存在且相同
  • - 路径 表示该路径在源中缺失,仅存在于目标中
  • + 路径 表示该路径在目标中缺失,仅存在于源中
  • * 路径 表示该路径在源和目标中都存在但不同
  • ! 路径 表示在读取或哈希源或目标时出现错误

--dest-after 标志会使用与 lsf 相同的格式标志(包括 可自定义的哈希、修改时间等选项)写入一个列表文件。从概念上讲,它类似于 rsync 的 --itemize-changes,但并不完全相同 —— 它应该输出一个准确的列表,显示同步后目标上将会存在的内容。

请注意,这些日志标志有一些限制,某些场景目前尚不支持:

  • --max-duration / CutoffModeHard
  • --compare-dest / --copy-dest
  • 一次性进行整个目录的服务器端移动
  • 高级重试,因为会产生重复项(使用 --retries 1 禁用)
  • 可能还有一些不常见的错误场景

此外,每个文件是在同步过程中记录的,而不是在同步之后,因此它最适合作为每个文件应该发生的情况的预测(这可能与实际发生的情况相符,也可能不相符)。

rclone sync source:path dest:path [flags]

Options

      --absolute                在路径名前添加一个前导斜杠 `/`
      --combined string         将更改的综合报告写入此文件
      --create-empty-src-dirs   同步后在目标端创建源端的空目录
      --csv                     以 CSV 格式输出
      --dest-after string       报告同步后目标端存在的所有文件
      --differ string           将所有不匹配的文件报告写入此文件
  -d, --dir-slash               在目录名后追加一个斜杠(默认值为 true)
      --dirs-only               仅列出目录
      --error string            将所有有错误(哈希计算或读取)的文件报告写入此文件
      --files-only              仅列出文件(默认值为 true)
  -F, --format string           输出格式 - 详情请参阅 lsf 帮助文档(默认值为 "p")
      --hash h                  当格式中使用 `h` 时,使用此哈希算法:MD5|SHA - 1|DropboxHash(默认值为 "md5")
  -h, --help                    显示 sync 命令的帮助信息
      --match string            将所有匹配的文件报告写入此文件
      --missing-on-dst string   将目标端缺失的所有文件报告写入此文件
      --missing-on-src string   将源端缺失的所有文件报告写入此文件
  -s, --separator string        格式项的分隔符(默认值为 ";")
  -t, --timeformat string       指定自定义时间格式,或使用 'max' 表示远程支持的最大精度(默认值:2006 - 01 - 02 15:04:05)

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

复制选项

任何可以复制文件的标志

      --check-first                                 在开始传输之前进行所有检查
  -c, --checksum                                    使用文件大小和校验和(如果可用)来检查文件是否有更改,若校验和不可用则仅使用文件大小
      --compare-dest stringArray                    在比较时包含额外的服务器端路径
      --copy-dest stringArray                       意味着使用 --compare-dest,并且会将指定路径中的文件复制到目标位置
      --cutoff-mode HARD|SOFT|CAUTIOUS              当达到最大传输限制时,停止传输的模式:HARD|SOFT|CAUTIOUS(默认值:HARD)
      --ignore-case-sync                            同步时忽略大小写
      --ignore-checksum                             跳过复制后对校验和的检查
      --ignore-existing                             跳过目标位置已存在的所有文件
      --ignore-size                                 跳过文件时忽略文件大小,使用修改时间或校验和
  -I, --ignore-times                                不跳过大小和时间都匹配的文件,无条件传输所有文件
      --immutable                                   不修改文件,如果现有文件已被修改则同步失败
      --inplace                                     直接下载到目标文件,而不是先原子下载到临时文件再重命名
  -l, --links                                       将符号链接转换为带有 `.rclonelink` 扩展名的常规文件,反之亦然
      --max-backlog int                             同步或检查积压中的最大对象数量(默认值:10000)
      --max-duration Duration                       rclone 传输数据的最长持续时间(默认值:0s)
      --max-transfer SizeSuffix                     要传输的数据的最大大小(默认值:无限制)
  -M, --metadata                                    如果设置了该选项,在复制对象时会保留元数据
      --modify-window Duration                      被视为相同的最大时间差(默认值:1ns)
      --multi-thread-chunk-size SizeSuffix          如果文件系统未设置,多线程下载/上传的块大小(默认值:64Mi)
      --multi-thread-cutoff SizeSuffix              对于大于此大小的文件使用多线程下载(默认值:256Mi)
      --multi-thread-streams int                    多线程下载使用的流数量(默认值:4)
      --multi-thread-write-buffer-size SizeSuffix   多线程模式下写入时的内存缓冲区大小(默认值:128Ki)
      --no-check-dest                               不检查目标位置,直接进行复制
      --no-traverse                                 复制时不遍历目标文件系统
      --no-update-dir-modtime                       不更新目录的修改时间
      --no-update-modtime                           如果文件相同,则不更新目标文件的修改时间
      --order-by string                             关于如何对传输进行排序的指令,例如 'size,descending'
      --partial-suffix string                       当不使用 --inplace 时,为临时文件名添加部分后缀(默认值:".partial")
      --refresh-times                               刷新远程文件的修改时间
      --server-side-across-configs                  允许跨不同配置进行服务器端操作(例如复制)
      --size-only                                   仅根据文件大小跳过文件,不考虑修改时间或校验和
      --streaming-upload-cutoff SizeSuffix          如果文件大小未知,切换到分块上传的阈值,达到阈值或文件结束时开始上传(默认值:100Ki)
  -u, --update                                      跳过目标位置中较新的文件

同步选项

同步命令使用的标志

      --backup-dir string               在以 DIR 为基础的层级结构中创建备份
      --delete-after                    同步时,在传输完成后删除目标端的文件(默认)
      --delete-before                   同步时,在传输开始前删除目标端的文件
      --delete-during                   同步时,在传输过程中删除目标端的文件
      --fix-case                        强制对大小写不敏感的目标端进行重命名,以匹配源端
      --ignore-errors                   即使出现 I/O 错误,也继续删除操作
      --max-delete int                  同步时,限制删除的文件数量(默认值:-1,表示无限制)
      --max-delete-size SizeSuffix      同步时,限制删除文件的总大小(默认值:无限制)
      --suffix string                   为更改的文件添加后缀
      --suffix-keep-extension           使用 --suffix 时保留文件扩展名
      --track-renames                   同步时,跟踪文件重命名操作,并尽可能进行服务器端移动
      --track-renames-strategy string   使用 --track-renames 进行同步时采用的策略:hash|modtime|leaf(默认值:"hash")

重要选项

对大多数命令有用的重要标记

  -n, --dry-run         Do a trial run with no permanent changes
  -i, --interactive     Enable interactive mode
  -v, --verbose count   Print lots more stuff (repeat for more)

过滤器选项

用于过滤目录列表的标志

      --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` 表示)的文件(默认关闭)

列表选项

列出目录的标志

      --default-time Time   Time to show if modtime is unknown for files and directories (default 2000-01-01T00:00:00Z)
      --fast-list           Use recursive list if available; uses more memory but fewer transactions

参见

  • rclone - 显示 rclone 命令、标志和后端帮助。