programing

와일드카드가 있는 폴더를 도커 컨테이너에서 호스트로 복사

instargram 2023. 5. 7. 10:56
반응형

와일드카드가 있는 폴더를 도커 컨테이너에서 호스트로 복사

컨테이너 내부에 mongodb를 덤프하기 위한 백업 스크립트를 생성하는 중, 컨테이너 외부에 있는 Docker 폴더를 복사해야 합니다.cp와일드카드와 함께 사용할 수 없는 것 같습니다.

docker cp mongodb:mongo_dump_* .

터미널에 다음이 던져집니다.

데몬의 오류 응답: lstat /var/lib/docker/aufs/mnt/SomeHash/mongo_dump_*: 해당 파일 또는 디렉토리 없음

cp 명령과 함께 와일드카드를 사용할 수 있는 해결 방법이 있습니까?

저도 비슷한 문제가 있었고, 두 단계로 해결해야 했습니다.

$ docker exec <id> bash -c "mkdir -p /extract; cp -f /path/to/fileset* /extract"
$ docker cp <id>:/extract/. .

도커 cp 명령 https://github.com/docker/docker/issues/7710 으로 와일드카드를 사용할 방법이 아직 없는 것 같습니다.

여기에 있는 다른 답변에서 자세히 설명한 대로 mongo 덤프 파일을 컨테이너 내부의 폴더에 만든 다음 폴더를 복사할 수 있습니다.

대규모 데이터셋이 있거나 작업을 자주 수행해야 하는 경우 가장 좋은 방법은 도커 볼륨을 사용하여 컨테이너에서 호스트 폴더로 직접 파일에 액세스할 수 있도록 하는 것입니다. https://docs.docker.com/engine/userguide/containers/dockervolumes/

오늘 저는 같은 문제에 직면했습니다.그리고 다음과 같이 해결했습니다.

docker exec container /bin/sh -c 'tar -cf - /some/path/*' | tar -xvf -

호프, 이게 도움이 될 거예요.

다른 가능성은 먼저 원하는 파일 목록을 가져오는 것입니다.ls컨테이너 내부에서 와일드카드로 작동합니다.그런 다음 각 행을 통과합니다.ls의 주장의 일환으로docker cp잠시 후 루프:

당신의 경우:

docker exec container bash -c "ls mongo_dump_*" | while read line; do docker cp container:/$line .; done

모두 복사할 수 있는 또 다른 간단한 예png에서 파일/home현재 디렉토리에 대한 도커 컨테이너 내부.

docker exec container bash -c "ls home/*.png" | while read line; do docker cp container:/$line .; done

언급URL : https://stackoverflow.com/questions/35806102/copy-folder-with-wildcard-from-docker-container-to-host

반응형