使用aws s3 sync未下载目标文件反而创建空目录的问题求助
使用aws s3 sync下载单个S3文件时创建空目录而非文件的问题
我尝试从公开S3数据集下载单个文件,目标文件路径为:
s3://ont-open-data/gm24385_q20_2021.10/analysis/20210805_1713_5C_PAH79257_0e41e938/guppy_5.0.15_sup/align_unfiltered/chr19/calls2ref.bam
按照教程执行了以下命令:
aws s3 sync --no-sign-request s3://ont-open-data/gm24385_q20_2021.10/analysis/20210805_1713_5C_PAH79257_0e41e938/guppy_5.0.15_sup/align_unfiltered/chr19/calls2ref.bam destination.bam
但实际并未下载文件,反而生成了一个名为destination.bam的空目录,和预期不符。我的AWS CLI版本信息如下:
$ aws --version aws-cli/1.15.15 Python/3.6.10 Linux/4.4.0-210-generic botocore/1.10.15
解决方法
- 问题根源:
aws s3 sync是为目录同步设计的命令,旧版本CLI在处理单个文件路径时,会将目标路径默认识别为目录,进而创建空目录。 - 可行方案:
- 下载单个文件优先用
aws s3 cp命令,替换后的命令如下:aws s3 cp --no-sign-request s3://ont-open-data/gm24385_q20_2021.10/analysis/20210805_1713_5C_PAH79257_0e41e938/guppy_5.0.15_sup/align_unfiltered/chr19/calls2ref.bam destination.bam - 如果一定要用
sync,需要将S3路径末尾加上斜杠(模拟目录结构),同时确保目标路径是已存在的目录,但这种方式不适合单个文件的直接下载,更适合批量同步场景。 - 建议升级AWS CLI到最新版本,新版本对单个文件的
sync逻辑做了优化,能避免这类识别错误。
- 下载单个文件优先用
内容的提问来源于stack exchange,提问作者Jerry Fan
相关产品推荐
相关产品推荐

