Bash
檢查文件是否存在於 S3 儲存桶中
該目錄
/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