2017-06-02 35 views
0

我編寫了一個shell腳本,它使用awscli從s3中的幾個文件夾獲取文件。我遇到的問題是,當我運行腳本時,它會創建文件夾,但文件只是下載到一個文件夾中。所創建的文件夾的名稱與S3中的相同。我如何修改此腳本以便創建文件夾,但這些文件會下載到相應的文件夾中。Shell腳本從S3文件夾下載文件併爲它們創建文件夾

#!/bin/bash -e 


DIRNAME='s3download' 
SLASH='/' 
SEVENFOLDERS=("folder1" "folder2" "folder3" "folder4" "folder5" "folder6" "folder7") 
SEVENFOLDERPATH=("s3://blah/folder1/" 
"s3://blah/folder2/" "s3://blah/folder3/" "s3://blah/folder4/" "s3://blah/folder5/" "s3://blah/folder6/" "s3://blah/folder7/") 

mkdir $DIRNAME 
for i in "${SEVENFOLDERS[@]}" 
do 
: 
SUBDIR=$DIRNAME$SLASH$i 
mkdir -p $SUBDIR 
done 

for k in "${SEVENFOLDERPATH[@]}" 
do 
: 
SUBDIR=$DIRNAME$SLASH$k 
aws s3 cp --recursive $k $SUBDIR 
done 
echo $i "Status: 200 OK" 
fi 

回答

0

aws s3 sync將下載與S3上相同結構的文件。

+0

'aws s3 sync 'does not work。你能否詳細說明一下代碼。 – kastsabug

+0

您需要查看文檔,但是我發現該命令至少有一個錯誤:您需要放置本地目錄* last *,因爲目標始終是最後一個。此外,「沒有工作」是沒有足夠的信息供任何人提供幫助。 – l0b0

+0

'aws s3 sync .'正在採取與其結構完整的S3轉儲。 – kastsabug