我有一个运行Linux的EC2示例,该示例用于运行aws s3
命令。
我希望将过去6个月的数据从source
同步到target
S3存储桶。我正在使用具有必要权限的凭据执行此操作。
最初我只是运行命令:
aws s3 sync "s3://source" "s3://target" --query "Contents[?LastModified>='2022-08-11' && LastModified<='2023-01-11']"
然而,大约10分钟后,这个命令停止运行,只有一小部分数据被同步。
我认为这是因为我的SSM会话正在终止,命令随之停止执行。
为了解决这个问题,我使用了以下命令来尝试并确保即使在我的SSM终端会话关闭之后,此命令也将继续执行:
nohup aws s3 sync "s3://source" "s3://target" --query "Contents[?LastModified>='2022-08-11' && LastModified<='2023-01-11']" --exclude "*.log" --exclude "*.bak" &
检查EC2示例的状态,命令似乎运行了大约20分钟,然后由于某种原因明显停止。
1条答案
按热度按时间8oomwypt1#
--query
参数控制在API调用的响应中显示哪些信息。它不控制在
aws s3 sync
命令中复制哪些文件。documentation foraws s3 sync
将--query
参数定义为:* “用于筛选响应数据的JMESPath查询。"*除非使用“排除”和“包含”筛选器,否则
aws s3 sync
命令将同步 * 所有 * 文件。这些筛选器对对象的 name 进行操作。通过提供日期范围来限制sync
命令是 * 不 * 可能的。我无法解释为什么命令在完成之前会停止运行。我建议您将输出重定向到日志文件,然后查看日志文件以获取任何线索。