【问题标题】:is there any way that you sync only files which are present in aws s3 bucket not the deleted one?有什么方法可以只同步 aws s3 存储桶中存在的文件而不是已删除的文件?
【发布时间】:2020-04-13 16:35:38
【问题描述】:

我正在做一个项目,我需要按照以下步骤操作:

  1. 将目录中存在的所有文件同步到 AWS S3 存储桶。
  2. 读取文件。

我有一个包含以下行的 shell 脚本:

s3 sync s3://<bucket_name>/performance/input scripts/input --region <region_name>

input_files=`ls -ltr scripts/input/ | awk -F ' ' '{print $9}'

echo ${input_files}

我在 Build 部分创建了 Jenkins 作业。我正在使用docker run 命令运行上面的shell 脚本。

现在的问题是,当我尝试从存储桶同步时,存储桶中存在的文件与我手动从存储桶中删除的已删除文件一起出现。

我只想要存储桶中存在的文件。谁能帮我解决这个问题?

echo ${input_files} 命令的输出如下:

+ input_files=

    <file_name>_2115.csv
    <file_name>_0001.csv
    <file_name>_0002.csv
    <file_name>_0003.csv
    <file_name>_0004.csv
    <file_name>_5444.csv
    <file_name>_1348.csv
    <file_name>_3914.csv
    <file_name>_5289.csv

此列表包含我手动删除的文件。这些文件以 _0001、0002、0003 和 0004 结尾。但是,我仍然可以看到这些文件即将到来。

【问题讨论】:

标签: amazon-s3 sh


【解决方案1】:

除非我遗漏了一些东西,否则我也看不到您在哪里同步您的 s3 文件?该命令的作用如下:

aws s3 sync &lt;source&gt; &lt;destination&gt;

如果您要将文件同步到活动目录,请尝试添加“.”作为目的地,您的 s3 源还有一个额外的“/”,应该是 s3://,除非您的存储桶以某种方式以 / 开头。

aws s3 sync s3://{bucket}/{key} . --region

【讨论】:

  • 我的目标文件夹是脚本/输入。我正在将所有文件同步到脚本/输入目录。
  • 哎呀抱歉,完全忽略了空间。此外,看起来您实际使用的同步功能不仅仅是一个副本,为什么不使用 aws s3 cp 代替呢?否则,您是否在 s3 存储桶中打开了版本控制?
  • 版本控制有什么作用?我没有任何想法。以及如何打开它?
【解决方案2】:

问题在于詹金斯的历史。 AWS 同步工作正常。 我刚刚在同步之前从该特定目录中添加了一个删除命令。

rm -rf scripts/input/*

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2019-06-07
    • 2018-05-16
    • 2022-01-28
    • 2011-03-23
    相关资源
    最近更新 更多