2

tar.gz 存档的人工存档条目下载API 系统性失败

整个档案可以在https://jcr.mydomain/artifactory/osb-cmdb-builds/manual_report.tgz下载,但个别文件在https://jcr.mydomain/artifactory/osb-cmdb-builds/manual_report.tgz!/ osb-cmdb/build/reports/tests/test/index.html失败并显示消息Unable to find zip resource: 'osb-cmdb/build/reports/tests/test/index.html' using full URI '/artifactory/osb-cmdb-builds/manual_report.tgz!/osb-cmdb/build/reports/tests/test/index.html'

然而,工件存储库浏览器会正确显示存档的内容。

这是使用 docker image jfrog/artifactory-jcrversion:7.3.2 和 tar复制的

$ tar --version
tar (GNU tar) 1.29
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

我错过了什么吗?这是在以后的版本中修复的人工错误吗?

以下是重现该问题的步骤:

$ tar cvfz manual_report2.tgz ./osb-cmdb/build/reports/tests/test/index.html
$ tar tvfz manual_report2.tgz
-rw-r--r-- guillaume/guillaume 4193 2020-04-01 22:25 ./osb-cmdb/build/reports/tests/test/index.html

看截图 浏览截图 入口下载截图

以及https://meta.stackexchange.com/questions/47689/how-can-i-attach-a-file-to-a-post中建议的谷歌驱动器上的示例 tgz

解决方法:使用 zip 或 tar 格式而不是 tar.gz 格式。

4

2 回答 2

3

该问题与“。”有关。你在文件的路径中。您可以在树浏览器屏幕截图中将点视为路径的一部分。尝试下载时 Artifactory 找不到文件的原因是路径缺少点。
点的棘手之处在于它被认为是一个特殊的符号,可以转换为当前目录。如果您尝试将其包含在用于下载文件的 URL 中,浏览器会将其删除。
但是,通过使用 URL 编码,我能够使用 cURL 下载文件:

curl -vv "http://localhost:8081/artifactory/generic-local/manual_report2.tgz%21/%2E/osb-cmdb/build/reports/tests/test/index.html"

以下 URL 编码的使用适用于 Firefox:

http://localhost:8081/artifactory/generic-local/manual_report2.tgz!%2F./osb-cmdb/build/reports/tests/test/index.html
于 2020-04-02T19:41:03.773 回答
1

(@dror-bereznitsky 的回答的细化)

避免 tar.gz 存档中的前导./

如果归档路径是动态计算的(例如 a 的结果),则使用https://unix.stackexchange.com/a/250186/381792中建议的参数find . -name "pattern"调用 tar 命令--transform='s|^\./||S'

$ find . -name "index.html"
./osb-cmdb/build/reports/tests/test/index.html
$ tar cvfz manual_report2.tgz --transform='s|^\./||S' `find . -name "index.html"`
$ tar tvfz manual_report2.tgz
-rw-r--r-- guillaume/guillaume 4193 2020-04-01 22:25 osb-cmdb/build/reports/tests/test/index.html
于 2020-04-03T10:27:18.523 回答