gsutil rsync同步两个文件夹时如何判断一个文件是旧文件还是新文件?

How does gsutil rsync determine whether a file is old or new when syncing two folders?

我正在将文件同步到 DRA 存储桶,我需要确保当源文件夹中的文件较新时,它必须同步到目标文件夹。

现在我正在使用 MD5 校验和来 100% 确定,但这对于 8TB 的数据集和大量文件来说太慢了。

如果我禁用 MD5 检查,gsutil rsync 如何确定文件是否应该同步?

来自 gsutil rsync --help:

更改检测算法 要确定文件或对象是否已更改,gsutil rsync 首先检查是否 源和目标大小匹配。如果他们匹配,接下来检查他们的 校验和匹配,如果可用则使用校验和(见下文)。

不同于Unix rsync 命令,gsutil rsync 不使用时间戳来确定是否 file/object 已更改,因为 GCS API 不允许调用者设置 对象的时间戳(因此,相同 files/objects 的时间戳不能 匹配)。

校验和在两种情况下不可用:

  1. 与文件系统同步或从文件系统同步时。默认情况下,gsutil 不会 校验和文件,因为处理大文件时速度变慢 文件。您可以使用 gsutil rsync -c 使 gsutil 对文件进行校验和 选项,以增加本地磁盘 I/O 和 运行 工作时间为代价 大文件。如果您的文件可以,您应该考虑使用 -c 选项 在不改变大小的情况下改变(例如,如果你有包含固定的文件 宽度数据,例如时间戳)。

  2. 将复合 GCS 对象与云提供商处的对象进行比较时 不支持 CRC32C(这是唯一可用的复合校验和 对象)。有关复合对象的详细信息,请参阅 'gsutil help compose'。

此致,
保罗