从S3文件夹下载文件并为其创建文件夹的Shell脚本

时间:2017-06-02 15:19:47

标签: bash shell amazon-s3

我编写了一个shell脚本,它使用awscli从s3中的几个文件夹中获取文件。我遇到的问题是,当我运行脚本时,它会创建文件夹,但文件只是下载到一个文件夹中。创建的文件夹的名称与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

2 个答案:

答案 0 :(得分:0)

aws s3 sync将以与S3相同的结构下载文件。

答案 1 :(得分:0)

以下命令替换“日期”节点中的值。

sed -i -e '/<System>/,/<\/System>/ s|<Date>[0-9a-z:/ .]\{1,\}</Date>|<Date>'"$newDate"'</Date>|g' sample.xml