使用AWS CLI下载S3存储桶文件到本地未复制成功如何解决?
AWS CLI执行S3下载命令显示成功但本地无文件的常见原因
你使用的标准S3递归下载命令aws s3 cp s3://<bucket>/<directory> /<path>/<to>/<local>/ --recursive不存在语法问题,出现下载日志正常输出但目标目录为空的情况,可从以下维度排查原因:
- 路径匹配错误
你检查的本地目录和命令中指定的目标目录可能并非同一目录:常见的错误包括路径拼写错误、混淆相对路径和绝对路径、目标路径为符号链接指向了其他位置。你可以执行readlink -f /my/local/dir确认目标路径的真实指向,再到对应路径下查找文件。如果命令是在容器、chroot等隔离环境中执行,你当前查看的宿主机目录和环境内目录也会存在隔离,文件实际保存在环境的内部路径中。 - 误加干运行参数
若命令中添加了--dryrun参数,AWS CLI只会模拟输出下载流程的日志,不会实际执行文件写入操作,你可以检查执行的完整命令是否携带该参数。 - 写入权限被拦截
运行AWS CLI的用户对目标目录无写入权限、目录开启了sticky bit特殊权限,或系统开启了SELinux、AppArmor等强制访问控制策略拦截了写入动作,都可能出现日志显示成功但实际未写入的情况。你可以查看系统审计日志(如/var/log/audit/audit.log)确认是否有拦截记录,另外本地部署的杀毒软件、EDR等安全工具也可能将下载的文件判定为风险项直接隔离,可到对应工具的隔离区排查。 - 存储介质未刷新
如果目标目录是挂载的网络共享盘、分布式存储或移动介质,可能存在缓存未刷新的情况,你可以执行ls -a /my/local/dir或者重新挂载介质后再检查,也可以尝试写入一个测试文件确认目录的写入功能是否正常。 - S3对象存储类别限制
若你下载的对象属于S3 Glacier灵活检索、深度归档等归档类存储类别,未提前提交恢复任务直接执行下载时,也可能出现无报错但未实际下载文件的情况,你可以在S3控制台确认对应对象的存储类别,归档类对象需要先恢复为可访问状态才能正常下载。
内容的提问来源于stack exchange,提问作者Christian Lemp
相关产品推荐
相关产品推荐

