我搜索了但没有找到令人满意的解决方案。
Minio / S3没有目录,只有键(带前缀)。到目前为止,一切都很好。
现在我需要更改这些前缀。不是单个文件,而是一整堆(很多)文件,这些文件可能很大(实际上没有限制)。
不幸的是,这些存储服务器似乎没有(并且不支持)概念:
每个文件要做的是
我给定的设计如下:
在处理对象创建的通知时使用路径前缀来区分它是上载(开始处理),temp(检查是否所有文件都已上传)和已处理/ jobid保留它们直到用户删除它们。
想象一个任务,其中1000个文件必须到达一个新位置(在同一存储桶中),并逐个复制和删除它们,其中有很多错误空间。复制操作期间存储空间不足,并且连接错误,没有任何回滚的机会。如果位置是不同的bucktes,并不会变得容易。
因此,采用这种旧设计,没有机会重命名/移动文件:
在不创建新物理文件的情况下复制文件是否有任何更改(不重复使用已用的存储空间)?
任何有经验的云开发人员都可以给我提示如何在错误情况下进行带回滚的批量复制吗?
例如,任何人都可以通过功能性的回滚机制实现类似的功能文件517的1000失败?复制并删除它们似乎不可行。
当前,我正在使用Minio服务器和Minio dotnet库。但是,由于它们与Amazon S3兼容,因此这种情况也可能在Amazon S3上发生。