循环浏览zip存档中的文件,然后将内容上传到S3

问题描述

我有一个zip文件目录。我想遍历每个存档并将每个存档的内容上传到S3。

因此,如果我有一个包含files/abc.zip123.png文件subdir/456.png,我想使用一个看起来像这样的S3存储桶

filecontents/abc.zip/123.png
filecontents/abc.zip/subdir/456.png

我一直无法弄清楚如何提取所有文件并将其管道传输到s3,因此我一直在遍历档案的内容。如果有一种方法可以不使用unzip -l,那就太完美了。

但是我使用unzip -l的尝试看起来像这样:

while read archivepath; do
  unzip -l ../$archivepath | while read -r size date time filepath ; do
    unzip -p ../$archivepath "$filepath" | 3 cp - s3://mybucket/filecontents/"$(basename -- "$archivepath")"/"$filepath"
  done
done <zippaths.txt

但是我遇到了错误,因为unzip -l命令不仅包含文件名,例如

Archive:  ../uploads/files/57d91710e7f9c27c0182aae1849e65d6.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    43324  2012-10-01 20:42   123.png
    43464  2012-10-01 20:45   subdir/456.png
---------                     -------
  1027503                     2 files

这会导致错误

caution: filename not matched:  
caution: filename not matched:  Name
caution: filename not matched:  ----
caution: filename not matched:  
caution: filename not matched:  

很显然,这只是提取了档案中不是文件的多余行。

是否有某种方法可以测试行是否与存档中的文件相关?

zipinfo 我确实提交了zipinfo -1命令,该命令仅列出文件名。但是,我需要使用rar l7z l做同样的事情,因此尽管这可能对拉链有所帮助,但我仍然会遇到问题。为了简单起见,我相信问题仅与zip有关,而我认为unzip -lrar l解决方案同样适用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)