所以我有一个 S3 视频桶(几百个(,我使用 ElasticTranscoder 将所有内容转码为第二个优化的存储桶。
但是,当我检查第二个存储桶时,对象减少了 40-50 个,但我无法弄清楚它们是什么(目录结构深度嵌套等(。
如何使用aws s3api list-objects
获取两个存储桶的文件差异?
也许存储桶中有一些文件不是视频,我不知何故不知道。
您可以使用带有--dryrun
选项的sync
命令进行比较,而不是同步。
aws s3 sync s3://bucket s3://bucket2 --dryrun
当然,您也可以使用它来比较本地目录和存储桶。
aws s3 sync . s3://bucket2 --dryrun
使用仅显示文件名:
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
灵感来自@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]}'