Bash

檢查文件是否存在於 S3 儲存桶中

  • March 24, 2020

該目錄/data/files/有數千個文件,例如:

1test
2test
3test

[...]

60000test
60001test

我還將它們發送到 S3 儲存桶 (AWS),使用AWS CLI. 但是,有時 S3 儲存桶可能會離線,因此會跳過該文件。

如何檢查存在的文件/data/files/是否也在 S3 儲存桶中?如果沒有將失去的文件複製到 S3?

我更喜歡使用 BASH 來執行此操作。此外,如果我需要將 AWS CLI 更改為另一個,也可以。

如果您aws s3 ls對實際文件名執行此操作。如果文件名存在,則退出碼為0並顯示文件名,否則退出碼不為0:

aws s3 ls s3://bucket/filname
if [[ $? -ne 0 ]]; then
 echo "File does not exist"
fi

第一個答案很接近,但如果您在 shebang 中使用 -e,腳本將失敗,這是您最不想要的。最好使用字數統計。因此,您可以使用以下命令:

wordcount=`aws s3 ls s3://${S3_BUCKET_NAME}/${folder}/|grep $${file}|wc -c`
echo wordcount=${wordcount}
if [[ "${wordcount}" -eq 0 ]]; then
do something
else
do something
fi

引用自:https://unix.stackexchange.com/questions/339650