我正在AWS中使用EC2实例来运行bash脚本,该脚本使用CLI从服务器下载文件,同时使用AWS CLI(aws s3 mv)将文件移至S3。但是,由于下载速度比向S3的传输速度快,所以在执行此操作之前通常会用光存储空间。这些每天下载的文件通常为数百GB,我根本不希望升级存储容量。
我用于下载的CLI会连续运行,直到成功/失败,但是会一直向控制台输出状态(当我从命令行而不是.sh运行它时)。我正在寻找一种方法,可以根据给定的规范从理论上运行此脚本。我最近的尝试是使用以下内容:
until (CLI_is_downloading) | grep -m 1 "download complete"; do aws s3 mv --recursive path/local_memory s3://path/s3; done
但是那用完了内存,下载在移动完成之前就失败了。
我想到的一些可能的解决方案是,以某种方式运行下载CLI,直到到达可用内存的特定点,然后再切换到传输,然后来回交替。另外,我对AWS不太熟悉,因此我不确定这是否可行,但是我可以限制下载速度以匹配传输速度(例如网络限制)吗?任何对我的想法的实用性的建议或关于如何实现这一点的其他建议,将不胜感激。
编辑:我再次检查了控制台输出,看来aws s3 mv --recursive仅在首次调用该函数然后停止时才移动了当前存在的文件。我相信,如果我反复调用它,直到我从其他CLI命令获得“文件下载”消息,它可能会起作用。我不确定确切如何执行此操作,因此仍会建议您,但否则,这似乎是明天的工作。