如何编写bash脚本来下载多个S3冰川档案?
我正在使用下面的bash脚本从AWS S3 glacier下载多个归档文件如何编写bash脚本来下载多个S3冰川档案?,bash,amazon-web-services,aws-cli,amazon-glacier,Bash,Amazon Web Services,Aws Cli,Amazon Glacier,我正在使用下面的bash脚本从AWS S3 glacier下载多个归档文件 #!/usr/bin/env bash export account_id=my_account_id export vault_name=my_value export archive_ids=("fA5tzbZeENQXl-hflqGmj8baB9q5ORwKAZlglAJeKDfNoomKJWLmA7SxpNPvgDxbS46Cp6Q8ByJiB7Vp8EipJ5shiSVMoj8Y5AZjxJEYhS
#!/usr/bin/env bash
export account_id=my_account_id
export vault_name=my_value
export archive_ids=("fA5tzbZeENQXl-hflqGmj8baB9q5ORwKAZlglAJeKDfNoomKJWLmA7SxpNPvgDxbS46Cp6Q8ByJiB7Vp8EipJ5shiSVMoj8Y5AZjxJEYhSsoQzHoqRQ48U2jiiDuBQ6ZW9Pazpp6PQ" "sLTV5km56fyT5k4TZIa9hQ9Q0m5YsmIQv8N1Vl4la5FTlsywobCARmvFKvI-KTJkyrGcm82LpRe62U9Z8xn6TEzdBAXYlgDSNI75biDMicBM76gyJ2dcpBRnDdulgK2ZhaZWgx0cbB")
for i in ${archive_ids[@]}; do
aws glacier initiate-job --vault-name ${VAULT_NAME} --account-id ${account_id} --job-parameters "{\"Type\": \"archive-retrieval\", \"ArchiveId\": \"$i\", \"Tier\": \"Expedited\"}"
done
上述脚本的一个问题是,它要求我在第一次for
循环后按q
继续执行
脚本保持在显示位置
的状态,并在第一个循环后显示作业ID
。我必须记住jobId
按q
使其离开此状态
{
"location": "/<account_id>/vaults/<vault_name>/jobs/1JbD7xVEBcOWQC1qnmxmNNnEpfy8E3-1fLaR6XoUnU5DK7TARLsS4-9jalykFeqK6_3A2VpvoscMz_xsTtAZYj_M_XSu",
"jobId": "1JbD7xVEBcOWQC1qnmxmNNnEpfy8E3-1fLaR6XoUnU5DK7TARLsS4-9jalykFeqK6_3A2VpvoscMz_xsTtAZYj_M_XSu"
}
{
“位置”:“//vaults//jobs/1JbD7xVEBcOWQC1qnmxmNNnEpfy8E3-1flar6xounu5dk7tarls4-9jalykfeq6_3A2VpvoscMz_xsTtAZYj_XSu”,
“作业ID”:“1JbD7xVEBcOWQC1qnmxmNNnEpfy8E3-1LAR6XOUUN5DK7TARLSS4-9JALYKFEQ6-2VPVOSCMZ\u xsTtAZYj\u M\u XSu”
}
如何将
jobId
输出到文件并使其不处于停止状态,以便使用脚本下载多个存档文件?我怀疑您正在使用AWS CLI v2,问题是由客户端寻呼机引起的
您可以在~.aws/config
文件中使用此配置选项停用寻呼机:
[default]
cli_pager=
请参阅:我编写了一个脚本来启动检索多个存档的作业,然后将所有作业ID存储到一个文件中
#!/usr/bin/env bash
# the file to store all the "archive-retrieval" jobs' ids
export job_ids_file=job_ids.log
export vault_name=my-vault
export archive_ids=("fA5tbzZegNQXl-hflqGmj8bDB9q5ORwKAZlglJJpK8fNoomKJWLmA7SxpNPvgDxbS46Cp6Q8ByJiB7Vp8EipJ5shiScMoj8Y5AZjxJEYhSsoQzHoqRQ4SU2DziDcBQaZW4Pqapw6PQ" "sLTV5kmh6fy45k4TZI49hQ9Q0m5YsmIQv8N1Vl4la5FTls2wobCAcmvFKvI-KTJkyrGcm82LpRe62U9Z8vn6TzpdBAXYagDSNI75biGMicBM74gyJ2dcpBRnDduqgK2ZhaZWgx0cbA")
rm ${job_ids_file}
for i in ${archive_ids[@]}; do
aws glacier initiate-job --vault-name ${vault_name} \
--account-id - \
--job-parameters "{\"Type\": \"archive-retrieval\", \"ArchiveId\": \"$i\", \"Tier\": \"Expedited\"}" \
--output text \
--query 'jobId' >> ${job_ids_file}
done
启动所有作业后,我运行第二个脚本开始下载归档文件
#!/usr/bin/env bash
export vault_name=my-vault
# store all the job ids into an array called "job_ids"
export job_ids=$(<job_ids.log)
for j in ${job_ids[@]}; do
echo job: ${j}
aws glacier get-job-output \
--vault-name ${vault_name} \
--account-id - \
--job-id ${j} \
${j}.tar
done
#/usr/bin/env bash
导出vault\u name=我的vault
#将所有作业ID存储到名为“作业ID”的数组中
导出作业ID=$(