shell 运行大量S3复制命令

dfty9e19  于 2023-06-24  发布在  Shell
关注(0)|答案(1)|浏览(129)

我有一个要求,我们将在S3上运行一个大型的复制命令,如

aws s3 cp s3://ABC/pqr/1/1157181.json s3://ABC/xyz/1/1157181.json
aws s3 cp s3://ABC/pqr/7/1157182.json s3://ABC/xyz/7/1157182.json
aws s3 cp s3://ABC/pqr/13/1157183.json s3://ABC/xyz/13/1157183.json
aws s3 cp s3://ABC/pqr/14/1157181.json s3://ABC/xyz/14/1157181.json
aws s3 cp s3://ABC/pqr/29/1157182.json s3://ABC/xyz/29/1157182.json
aws s3 cp s3://ABC/pqr/33/1157183.json s3://ABC/xyz/33/1157183.json
.
.
.
aws s3 cp s3://ABC/pqr/n/1157277.json s3://ABC/xyz/n/1157277.json

有几百万个这样的命令。我可以将它们作为shell脚本文件运行。
但是它很慢,我想知道是否有更好的方法来运行它。

oprakyz7

oprakyz71#

在没有找到适合我的特定场景的任何解决方案之后,我执行了以下操作来执行数百万个AWS S3 cli命令
1.生成具有s3权限的EC2示例。
1.将包含我所有命令的文件复制到EC2示例。
1.手动或使用split命令拆分命令文件
split -l 200000 commands.sh-d -a 1 commands.sh
1.生成一个新的shell脚本文件,运行所有的split命令文件,如
sh command.sh0 > command0.log & sh command.sh1 > command1.log &
1.此外,您可以通过使用'>'添加单个日志,并通过使用'&'可以在后台运行命令。
1.最后使用'ps aux'我们可以监视执行状态。

相关问题