Jishan
Jishan

Reputation: 1684

Copy .txt files from docker container to host

So I have a docker container with .txt and .csv files in it. I need to copy these to host. But I only need to copy files .txt files. The command sudo docker cp -a env1_1:/path/*.txt . does not seem to work. Is copying files of a specific types possible using docker cp? I am unable to find any alternatives for now.

Any suggestions?

Thanks.

Upvotes: 1

Views: 861

Answers (1)

ErikMD
ErikMD

Reputation: 14723

Indeed, docker cp does not support glob patterns, and as an aside, container paths are absolute:

The docker cp command assumes container paths are relative to the container’s / (root) directory. This means supplying the initial forward slash is optional […]

Local machine paths can be an absolute or relative value. The command interprets a local machine’s relative paths as relative to the current working directory where docker cp is run.

However, one may devise a workaround, relying on docker exec, and a manually crafted shell command relying on the tar command on both sides (assuming it is available in the image):

sudo docker exec env1_1 sh -c 'cd /path && tar cf - *.txt' | tar xvf -

or if need be:

sudo docker exec env1_1 sh -c 'cd /path && tar cf - *.txt' | ( cd /dest/path && tar xvf - )

Here, the special filename - denotes STDOUT (or respectively STDIN).

Usual disclaimer: the final tar command will overwrite without further notice the selected files in the current folder (or /dest/path in the second example).

Upvotes: 1

Related Questions