【问题标题】:docker copy all files in directory with given extentiondocker复制具有给定扩展名的目录中的所有文件
【发布时间】:2021-09-15 11:00:53
【问题描述】:

我可以将一个文件从 docker 容器复制到服务器

docker cp docker_session_name:/root/mydir/ .

我想知道只从 mydir 复制具有给定扩展名的文件,例如 pdf

【问题讨论】:

    标签: linux docker server copy


    【解决方案1】:

    我认为你不能用 docker cp command 做到这一点

    为此,您可以将目录挂载到 docker 中,然后您可以使用正则表达式运行常规 cp 命令将其复制到另一个目录。

    坐骑:

    docker run -d --name containerName -v myvol2:/app imageName:tag
    

    容器内:

    cp app/*.pdf /destination
    

    【讨论】:

      【解决方案2】:

      看起来你不能像在 Linux 中那样运行(参见 similar thread

      不是这样的:

      docker cp docker_session_name:/root/mydir/*.pdf .
      

      简单回答

      使用这个脚本:

      path="/root/mydir"
      for file in $(docker exec docker_session_name sh -c "ls ${path}/*.pdf"); do
              docker cp docker_session_name:${file} .
      done
      

      感谢this 线程

      简单易用的繁琐答案(无脚本)

      但是,您可以像在 docker run 命令中那样在主机和所需路径之间挂载绑定挂载:

      docker run -v /host/path/:/root/mydir/ my-image
      

      然后在docker run 命令中使用的/host/path/ 的主机路径中使用通配符*.pdf 运行cp

      【讨论】:

      • 对不起,我的容器ID,我会编辑答案
      • 如果您使用docker run 命令,那么您可以使用带有通配符的普通linux cp 命令
      • 该脚本是一个 bash 脚本,但它也不允许使用通配符
      • 使用该选项的修订解决方案
      • @user1934428 是的,这就是他想要的,但根据docker cp 命令和答案中引用的其他类似帖子的当前状态 - 这样的事情是不可能的。所以在缺乏确切的解决方案的情况下,我提出了一个不同的解决方案,它可以工作并且不会造成太多麻烦
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 2015-06-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      相关资源
      最近更新 更多