Linux 将tar的现有绝对文件夹结构选择性解压缩到目录

Linux 将tar的现有绝对文件夹结构选择性解压缩到目录,linux,docker,gzip,tar,Linux,Docker,Gzip,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 我想将归档文件的卷/wordpress的内容提取到主机上的/var/www/ht

假设
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
我想将归档文件的
卷/wordpress
的内容提取到主机上的
/var/www/html
目录中(该目录已存在且无法删除),最终得到:

/var/www/html/a
/var/www/html/.b
/var/www/html/c/d
我没有办法重新格式化tar文件

我所尝试的:

  • gunzip-c example.tar.gz | tar-c/var/www/html-xf-volumes/wordpress

    但这会创建
    /var/www/html/volumes/wordpress/…

  • gunzip-c example.tar.gz | bash-c'tar-c/tmp-xf-volumes/wordpress&&mv/tmp/volumes/wordpress/*/var/www/html'

    但这会跳过
    .b
    文件

  • gunzip-c example.tar.gz | bash-c'tar-c/tmp-xf-volumes/wordpress&&rsync-a——删除源文件/tmp/volumes/wordpress//var/www/html/”

    但是rsync在docker容器的上下文中不存在

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

  • gunzip…|docker compose run--rm wordpress tar…
    这允许在docker compose yml中定义wordpress容器(因此我声明无法删除
    /var/www/html/
    ,因为它是作为卷装入的)

编辑结果表明,我最终找到了一个令人满意的(尽管很粗糙)解决方案,而且是针对Docker的(所以编辑的问题包括Docker标签)。我将提供一个粗略的答案来回答这个问题。如果可能的话,我仍然对与Docker无关的答案感兴趣。

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

e、 g

gunzip-c example.tar.gz | docker compose run--rm-v我的卷:/volumes/wordpress我的服务tar-c/-xf-volumes/wordpress