Bash脚本获取s3存储桶中文件夹的总大小

时间:2020-04-29 05:26:36

标签: linux bash amazon-web-services shell amazon-s3

我正在尝试编写bash脚本以获取S3存储桶中子文件夹的总大小。

我的存储路径 s3:// path1 / path2 /子文件夹

在path2文件夹中,我有很多子文件夹,如

2019_06
2019_07
2019_08
2019_09
2019_10
2019_11
2019_12

我需要在bash脚本中获取每个子文件夹的大小。

我写了一个类似

的脚本
    #!/bin/bash

    FILES=$(mktemp)

    aws s3 ls "s3://path1/path2/"  >> "$FILES"

 cat $FILES
echo

for file in $FILES
do    

  if [ ! -e "$file" ]      
  then 
s3cmd du -r  s3://path1/path2/$file
   echo "$file"; echo
   continue               
 fi 

echo
done

cat $ tmpfile的输出如下

2019_06
2019_07
2019_08
2019_09
2019_10
2019_11
2019_12

但是出现错误。在将变量传递到 for循环时。理想情况下,我的目标就像每次循环在 do .....中运行时一样。命令应该像

s3cmd du -r s3:// path1 / path2 / 2019_06

s3cmd du -r s3:// path1 / path2 / 2019_07

s3cmd du -r s3:// path1 / path2 / 2019_08

等...

这样我就可以得到文件夹的总大小

请帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用xargs来做到这一点:

aws s3 ls "s3://path1/path2/" | xargs -n1 -I{} s3cmd du -r "s3://path1/path2/{}"