aws的s3迁移操作

有时候我们需要将aws的s3的一个bucket的数据迁移到另一个s3的bucket的,比如从亚洲迁移到美洲,从北美迁移南美之类,那么使用如下命令即可:

aws s3 cp --recursive s3://bucket-src/2021/ s3://bucket-dst/2021/

这里看起来像是linux上的目录拷贝,但实际是基于前缀匹配的递归拷贝。拷贝过程并不涉及将数据拷贝到执行命令的机器上,再拷贝到目标s3上,而是直接从源s3到了目标s3。

假如遇到更复杂的要求:

1. 只迁移某种类型的文件,比如.csv

2. 同时需要将.csv压缩成.csv.gz

操作命令如下:

day=2020/11/10
for i in `aws s3 ls s3://bucket-src/$day/ | grep -oE '[^ ]+.csv'`; do
    aws s3 cp --content-encoding gzip s3://bucket-src/$day/$i - | gzip | aws s3 cp - s3://bucket-dst/$day/$i.gz
done

因为有压缩计算,所以必然有数据先到本地机器,再上传到目标s3的过程。节省带宽所以请求使用gzip,同时命令直接使用管道,所以本地不占磁盘空间。

发表于 2021年07月01日 08:53   评论:0   阅读:1170  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo