所以我有一个S3视频桶(数百个),我使用ElasticTranscoder将所有内容转码为第二个优化桶。
然而,当我检查我的第二个桶时,减少了40-50个对象,但我无法弄清楚它们是什么(目录结构是深层嵌套等)。
如何使用aws s3api list-objects
获取两个存储桶的文件差异?
也许存储桶中的文件不是视频,我不知道这些文件。
答案 0 :(得分:5)
aws s3 ls s3://bucket-1 --recursive | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//' | sort > bucket_1_files
aws s3 ls s3://bucket-2 --recursive | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//' | sort > bucket_2_files
diff bucket_1_files bucket_2_files
答案 1 :(得分:1)
您可以将sync
命令和--dryrun
选项一起使用来进行比较而不是进行同步。
aws s3 sync s3://bucket s3://bucket2 --dryrun
您当然也可以使用它来比较本地目录和存储桶。
aws s3 sync . s3://bucket2 --dryrun
答案 2 :(得分:0)
灵感来自@George 评论
您可以使用它来提取路径列表:
aws s3 sync s3://<main-bucket> s3://<second-bucket> --dryrun | awk 'match($3,"^(s3://[^/]+/)(.*)",a) {print a[2]}'
或本地路径
aws s3 sync <local-path> s3://darsak2.public --dryrun | awk 'match($3,"^(./)?(.*)",a) {print a[2]}'