我不确定真正的rsync是否适合亚马逊。
据我了解,标准的rsync算法意味着客户端为文件的每个块计算哈希,而服务器为文件的副本计算哈希并将这些哈希发送给客户端,这意味着客户端可以确定哪些块已更改并需要上传。
这给亚马逊带来了两个问题,即大量的哈希必须通过互联网发送出去,并且还需要处理能力来计算所有这些哈希,这会增加亚马逊的成本-这可能就是为什么他们将其留给第三方提供商的原因为此功能额外收费。
至于克隆,它们显然将哈希存储在某个地方,并且某个地方可能会因克隆而异。他们有可能将哈希作为每个文件的单独对象存储在Amazon或存储在Amazon的数据库中,或者可以将它们存储在本地和远程。
无论哪种方式,都有其优点和缺点。如果散列远程存储在单个文件中,则连续检索它们可能会很昂贵。如果散列远程存储在数据库中,则该数据库可能会很大,并且不断检索和更新它们可能会很昂贵。如果将哈希存储在本地,则有助于降低成本,但会带来其他复杂性和问题。
(当然,Amazon还有其他服务,因此可以将数据库保留在Amazon DB中)
作为示例,很多年前,我尝试了一个早期的rsync克隆。编写此代码时未考虑到亚马逊的定价结构,而是发行了许多http来检索每个区块的哈希值,并且由于Amazon为每个区块收取费用,这意味着虽然我的账单的存储部分急剧下降,但转帐部分气球
使用重复性+ s3而不是rsync + s3rsync + s3,我会失去什么?
您失去了使用rsync知道您正在将源文件与备份文件进行比较的事实。使用双重性和其他克隆,您会将源文件与执行备份时使用的哈希进行比较。例如,可以直接访问S3并替换其文件之一,而无需重新计算哈希或更新哈希数据库。