首页 > 解决方案 > 选择性解压,忽略现有的绝对文件夹结构,tar到一个目录

问题描述

假设example.tar.gz存档包含以下内容:

volumes/wordpress/a
volumes/wordpress/.b
volumes/wordpress/c/d
volumes/service2/a
volumes/service2/.b
volumes/service3/c/d
volumes/service3/a
volumes/service3/.b
volumes/service3/c/d

我想volumes/wordpress将存档的内容提取到/var/www/html主机上的目录(已存在且无法删除),最终得到:

/var/www/html/a
/var/www/html/.b
/var/www/html/c/d

我无法重新格式化 tar 文件。

我试过的:

请注意,因为我认为这与这个问题无关,所以我跳过了 Docker 相关细节,但如果有用,我正在运行的命令采用以下格式:

编辑事实证明,我最终找到了一个令人满意的(虽然 hacky)解决方案来解决我的问题,而且它是 Docker 特定的(因此编辑了包含 Docker 标签的问题)。我将提供 hacky 答案作为问题的答案。如果可能的话,仍然对非 Docker 相关的答案感兴趣。

标签: linuxdockergziptar

解决方案


我能够将已经定义的(通过 docker-compose.yml)卷重新挂载到 docker my-volume-compose 运行my-service,但在这种情况下映射到第二个容器化目录,tar 将在其中输出其内容。

例如

gunzip -c example.tar.gz | docker-compose run --rm -v my-volume:/volumes/wordpress my-service tar -C / -xf - volumes/wordpress


推荐阅读