<p>mc 镜像覆盖当前损坏</p>

创建于 2020-01-29  ·  12评论  ·  资料来源: minio/mc

预期行为

mc mirror --overwrite 应该检测更改的文件

实际行为

看来,目前没有

重现行为的步骤

$ mc mb myminio/mybucket 
Bucket created successfully `myminio/mybucket`.

$ echo one > testdir/testfile.txt

$ cat testdir/testfile.txt 
one

$ mc mirror --overwrite testdir myminio/mybucket 
...estfile.txt:  4 B / 4 B ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 227 B/s 0s

$ mc cat myminio/mybucket/testfile.txt
one

$ echo two > testdir/testfile.txt

$ cat testdir/testfile.txt 
two

$ mc mirror --overwrite testdir myminio/mybucket 
 0 B / ? ┃░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓┃ 0s

$ mc cat myminio/mybucket/testfile.txt
one

mc --version

mc 版本 RELEASE.2020-01-25T03-02-19Z

系统信息

客户端和服务器:Fedora 31 使用 XFS 作为文件系统
迷你版 2020-01-25T02:50:51Z

community medium stale

最有用的评论

使用 --overwrite 和 --preserve:

$ mc mb myminio/mybucket
Bucket created successfully `myminio/mybucket`.

$ echo one > testdir/testfile.txt

$ cat testdir/testfile.txt 
one

$ mc mirror --overwrite --preserve testdir myminio/mybucket 
...estfile.txt:  4 B / 4 B ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 283 B/s 0s

$ mc cat myminio/mybucket/testfile.txt
one

$ echo two > testdir/testfile.txt

$ cat testdir/testfile.txt 
two

$ mc mirror --overwrite --preserve testdir myminio/mybucket 
 0 B / ? ┃░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓┃ 0s

$ mc cat myminio/mybucket/testfile.txt
one

所有12条评论

使用 --overwrite 和 --preserve:

$ mc mb myminio/mybucket
Bucket created successfully `myminio/mybucket`.

$ echo one > testdir/testfile.txt

$ cat testdir/testfile.txt 
one

$ mc mirror --overwrite --preserve testdir myminio/mybucket 
...estfile.txt:  4 B / 4 B ┃▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓┃ 283 B/s 0s

$ mc cat myminio/mybucket/testfile.txt
one

$ echo two > testdir/testfile.txt

$ cat testdir/testfile.txt 
two

$ mc mirror --overwrite --preserve testdir myminio/mybucket 
 0 B / ? ┃░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓┃ 0s

$ mc cat myminio/mybucket/testfile.txt
one

@sebschlue这实际上是已知和预期的。 如果文件大小没有变化,mc mirror 不会检测文件中的变化,例如onetwo具有相同的长度。

@vadmest导致这种情况的限制是什么? 充其量似乎不方便。

@vadmest导致这种情况的限制是什么? 充其量似乎不方便。

服务器端不存储校验和(ETag在某些情况下不等于对象的md5sum)

在 Slack 频道,一些人确认在使用 --preserve 时它应该可以工作

@vadmest导致这种情况的限制是什么? 充其量似乎不方便。

服务器端不存储校验和(ETag在某些情况下不等于对象的md5sum)

哎哟。 这意味着要对某些内容进行快照,我们需要依赖 rsync。
有没有办法附加/更改一些经过检查以强制执行此操作的无害元数据? 或者确保 etag 等于哈希?

服务器端不存储校验和(ETag在某些情况下不等于对象的md5sum)

哎哟。 这意味着要对某些内容进行快照,我们需要依赖 rsync。
有没有办法附加/更改一些经过检查以强制执行此操作的无害元数据? 或者确保 etag 等于哈希?

为此,使用rclone @seqizz计算整个内容的校验和 - ETag 不是 md5sum 并不总是看到 SSE-C、Multipart 等 - 而且 md5sum 不可靠,那里的许多对象可以简单地匹配相同的 md5sum - https: //www.mscs.dal.ca/~selinger/md5collision/并且它在规模上显然很常见。

当然,除非我们可以使用 blake2b 之类的技术计算整个对象的校验和 - 我们需要在上传内容之前计算它,从而显着减慢您要上传的速度。

rsync 用于本地磁盘到远程磁盘,使用 delta 协议读取两端的校验和,由于云成本,这在对象存储的情况下是意外的。

啊,当然,我只是随意拍摄,因为目前不受“云流量成本”的约束:) 我会检查 rclone。 谢谢。

只是好奇,是否可以添加另一个像 etag 这样的标头,但包含 minio 的哈希(在创建/修改时),而不会破坏兼容性?

只是好奇,是否可以添加另一个像 etag 这样的标头,但包含 minio 的哈希(在创建/修改时),而不会破坏兼容性?

@seqizz绝对有可能是mc特定的,这意味着无论如何我们都无法控制您的存储后端,因此mc无法正确理解那里的任何状态更改。

这可能会导致双重复制等问题,它是故意留下的,因为我们无法找出针对所有通用用例正确执行此操作的具有成本效益的方法。

那么这个问题可以关闭吗?

恕我直言,这需要更清楚地记录,最好直接在 mc 文档的镜像部分。
但是,是的,如果这就是 minio 的工作方式,听起来不像是一个错误。 👍

此问题已自动标记为陈旧,因为它最近没有活动。 如果没有进一步的活动,它将在 21 天后关闭。 感谢你的贡献。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ramosisw picture ramosisw  ·  4评论

donatello picture donatello  ·  5评论

richarson picture richarson  ·  5评论

i0x71 picture i0x71  ·  5评论

d5ve picture d5ve  ·  6评论