Rackspace CloudFiles迁移至S3:文件显为文件夹且rclone无法识别
解决Rclone迁移Rackspace CloudFiles到S3时遗漏特殊分块文件的问题
问题根源
Rackspace旧版CloudFiles的分块上传机制会生成特殊文件结构:分块上传完成后,系统会创建一个与文件名同名的空文件夹占位符,实际文件内容存储在后台,仅能通过CDN或特定API调用访问。Rclone默认的目录扫描逻辑只会识别到这个空文件夹,忽略了背后关联的真实文件,导致迁移遗漏;而rclone check仅比对已识别的对象,因此检测不出差异。
解决方法
一、调整Rclone复制参数,强制识别关联文件
在复制命令中添加以下参数,优化源端文件识别逻辑:
--cloudfiles-list-chunk=1000:增大Rackspace API的列表请求分块大小,避免分页导致的对象遗漏--checksum:基于文件哈希值验证完整性,替代默认的大小+修改时间校验(这类特殊文件的元数据可能异常)--no-traverse:跳过目标端目录遍历,直接按源端文件列表复制,避免因目录结构误解遗漏文件- 若明确遗漏文件的后缀,可添加
--include "*.mp4"(替换为对应后缀)精准匹配
示例命令:
rclone copy racksyd:mybucket wasabi:mybucket --cloudfiles-list-chunk=1000 --checksum --no-traverse --progress
二、用严格命令验证迁移完整性
rclone check仅比对已同步的对象,改用rclone verify直接校验文件内容哈希,能精准发现遗漏或损坏的文件:
rclone verify racksyd:mybucket wasabi:mybucket --checksum --progress --missing-on-dst=mybucket-missing-verify.txt
三、基于Rackspace官方文件清单复制
如果上述方法无效,可配合Rackspace工单获取真实文件路径清单(而非仅显示空文件夹的列表),再通过--files-from参数指定复制范围:
- 从Rackspace获取所有实际文件的路径,保存为
filelist.txt(每行一个文件路径) - 执行复制命令:
rclone copy racksyd:mybucket wasabi:mybucket --files-from=filelist.txt --checksum --progress
其他用户经验
不少使用过Rackspace旧版CloudFiles的用户都遇到过这类分块上传遗留问题,核心是Rclone默认的列表逻辑无法识别“占位文件夹+后台文件”的特殊关联,需通过参数调整或外部清单强制读取真实文件。
内容的提问来源于stack exchange,提问作者rodneyt
相关产品推荐
相关产品推荐

