aws s3api list-objects-v2 --bucket b --prefix old/ --query "KeyCount"
aws s3 cp s3://b/old/ s3://b/new/ --recursive

用挂载工具把桶挂到本地后执行 mv 目录,十分钟没结束,监控里 PUT 和 DELETE 请求各十万次,带宽跑满。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。

原因不复杂,对象存储没有目录,只有带斜杠的 key,重命名等于逐个对象复制再删除。本地 mv 是元数据操作,这里变成 N 次网络请求。目录层级越深、对象越多,耗时按条数线性增长。

「对象存储目录语义」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

处理上按这个顺序:批量迁移用服务端复制 别经过本地挂载;能改前缀就改前缀 不要真搬对象;迁移前用清单统计条数估算耗时;挂载只用于临时查看 不要在上面跑批处理。

改完只确认一件事:服务端复制完成后 new/ 下对象条数和原目录一致,耗时从小时级降到分钟级。

作者 9823189