Ozy*_*ias 8 command-line-interface amazon-s3 amazon-web-services
我一直在尝试使用 AWS CLI 从 AWS 中的子文件夹下载所有文件,但是,在下载前几个文件后,它无法下载其余文件。我相信这是因为它为文件名添加了扩展名,然后将其视为无效的文件路径。
我正在使用以下命令;
aws s3 cp s3://my_bucket/sub_folder /tmp/ --recursive
Run Code Online (Sandbox Code Playgroud)
对于子文件夹中的几乎所有文件,它给了我以下错误;
[Errno 22] Invalid argument: 'C:\\tmp\\2019-08-15T16:15:02.tif.deDBF2C2
Run Code Online (Sandbox Code Playgroud)
我认为这是因为 .deDBF2C2 扩展名似乎在下载时添加到文件中,但我不知道为什么会这样。文件名在实际存储桶中都以 .tif 结尾。
有谁知道是什么原因造成的?
更新:该命令在我从 linux 机器上执行后就起作用了。似乎特定于Windows。
Jer*_*son 12
这是AWS 在日志文件名称中使用 Windows 保留字符的疏忽!当您执行该命令时,它将创建所有目录,但是::名称中包含的任何日志都无法下载。
此处讨论问题:https ://github.com/aws/aws-cli/issues/4543
非常沮丧,我想出了一个解决方法,通过执行“DryRun”来打印预期的日志输出并将其移植到文本文件,例如:
>aws s3 cp s3://config-bucket-7XXXXXXXXXXX3 c:\temp --recursive --dryrun > c:\temp\aScriptToDownloadFilesAndReplaceNames.txt
Run Code Online (Sandbox Code Playgroud)
输出文件充满了这些aws 日志条目,我们可以将其转换为 aws 脚本命令:
(试运行)下载:s3://config-bucket-7XXXXXXXXXXX3/AWSLogs/7XXXXXXXXXXX3/Config/ap-southeast-2/2019/10/1/ConfigHistory/7XXXXXXXXXXX3_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z _1.json.gz 到\AWSLogs\7XXXXXXXXXXX3\Config\ap-southeast-2\2019\10\1\ConfigHistory\703014955993_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z_1.json.gz
在 Notepad++ 或其他文本编辑器中,将其替换(dryrun) download:为aws s3 cp
然后您将看到以下几行命令:aws s3 cp、存储桶文件和本地文件路径。我们需要删除to右侧本地文件路径中的:::
aws s3 cp s3://config-bucket-7XXXXXXXXXXX3/AWSLogs/7XXXXXXXXXXX3/Config/ap-southeast-2/2019/10/1/ConfigHistory/7XXXXXXXXXXX3_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z_1.json.gz to AWSLogs\7XXXXXXXXXXX3\Config\ap-southeast-2\2019\10\1\ConfigHistory\7XXXXXXXXXXX3_Config_ap-southeast-2_ConfigHistory_AWS::RDS::DBInstance_20191001T103223Z_20191001T103223Z_1.json.gz
Run Code Online (Sandbox Code Playgroud)
我们可以使用正则表达式将::替换为-仅在本地路径而不是 S3 Bucket 路径中(.*)::,该正则表达式删除每行末尾最后出现的字符:

$1-在这里我们可以看到我通过单击“全部替换”两次
将 :: 替换为连字符:
接下来删除to(忽略下图中的 | 光标图标,to应该替换为任何内容)。
查找:json.gz to AWSLogs
替换:json.gz AWSLogs
最后选择所有行复制/粘贴到命令提示符中以下载带有保留文件字符的所有文件!
更新:
如果您有 WSL(Windows 子系统 Linux),您应该能够下载文件,然后在复制到安装的 Windows 文件夹系统之前发出简单的文件重命名替换 :: 。
| 归档时间: |
|
| 查看次数: |
2120 次 |
| 最近记录: |