问题描述
我有一个zip文件目录。我想遍历每个存档并将每个存档的内容上传到S3。
因此,如果我有一个包含files/abc.zip
和123.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 l
和7z l
做同样的事情,因此尽管这可能对拉链有所帮助,但我仍然会遇到问题。为了简单起见,我相信问题仅与zip有关,而我认为unzip -l
和rar l
的解决方案同样适用
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)