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 命令、标志和后端帮助。