6.6. OpenShift Container Platform 컨테이너에 또한 해당 컨테이너에서 파일 복사

CLI에서 rsync 명령을 사용하여 컨테이너의 원격 디렉터리에서 또는 원격 디렉터리로 로컬 파일을 복사할 수 있습니다.

6.6.1. 파일을 복사하는 방법 이해

oc rsync 명령 또는 원격 동기화는 백업 및 복원을 위해 Pod에서 및 Pod로 데이터베이스 아카이브를 복사하는 유용한 툴입니다. 실행 중인 Pod에서 소스 파일의 핫 리로드를 지원하는 경우 개발 디버깅을 위해 oc rsync를 사용하여 소스 코드 변경 사항을 실행 중인 Pod에 복사할 수도 있습니다.

$ oc rsync <source> <destination> [-c <container>]

6.6.1.1. 요구사항

복사 소스 지정
oc rsync 명령의 소스 인수는 로컬 디렉터리 또는 pod 디렉터리를 가리켜야 합니다. 개별 파일은 지원되지 않습니다.

Pod 디렉터리를 지정할 때는 디렉터리 이름 앞에 Pod 이름을 붙여야 합니다.

<pod name>:<dir>

디렉터리 이름이 경로 구분자(/)로 끝나는 경우 디렉터리의 콘텐츠만 대상에 복사됩니다. 그러지 않으면 디렉터리 및 해당 콘텐츠가 대상에 복사됩니다.

복사 대상 지정
oc rsync 명령의 대상 인수는 디렉터리를 가리켜야 합니다. 해당 디렉터리가 존재하지 않지만 rsync가 복사에 사용되는 경우 사용자를 위해 디렉터리가 생성됩니다.
대상의 파일 삭제
--delete 플래그는 로컬 디렉터리에 없는 파일을 원격 디렉터리에서 삭제하는 데 사용할 수 있습니다.
파일 변경 시 연속 동기화
--watch 옵션을 사용하면 명령에서 파일 시스템 변경의 소스 경로를 모니터링하고 변경이 발생하면 변경 사항을 동기화합니다. 이 인수를 사용하면 명령이 영구적으로 실행됩니다.

빠르게 변경되는 파일 시스템으로 인해 동기화를 연속으로 호출하지 않도록 동기화는 잠시 후에 수행됩니다.

--watch 옵션을 사용할 때의 동작은 일반적으로 oc rsync에 전달되는 인수를 포함하여 oc rsync를 수동으로 반복해서 호출하는 것과 사실상 동일합니다. 따라서 -delete와 같이 oc rsync를 수동으로 호출하는 데 사용하는 것과 같은 플래그를 통해 해당 동작을 제어할 수 있습니다.

6.6.2. 컨테이너에서 또는 컨테이너에 파일 복사

컨테이너에서 또는 컨테이너에 로컬 파일 복사 지원 기능은 CLI에 빌드됩니다.

사전 요구 사항

oc rsync로 작업할 때 다음 사항에 유의하십시오.

rsync가 설치되어 있어야 합니다.
oc rsync 명령에서는 로컬 rsync 툴이 클라이언트 머신 및 원격 컨테이너에 있는 경우 이 툴을 사용합니다.

rsync가 로컬이나 원격 컨테이너에 없는 경우 tar 아카이브는 로컬에 생성된 후 컨테이너로 전송되며, 여기에서 tar 유틸리티를 통해 파일이 추출됩니다. 원격 컨테이너에서 tar를 사용할 수 없는 경우 복사가 실패합니다.

tar 복사 방법에서는 oc rsync와 동일한 기능을 제공하지 않습니다. 예를 들어 oc rsync는 대상 디렉터리가 존재하지 않는 경우 대상 디렉터리를 생성하고 소스와 대상 간에 다른 파일만 보냅니다.

참고

Windows에서는 oc rsync 명령과 함께 사용할 수 있도록 cwRsync 클라이언트를 설치하고 PATH에 추가해야 합니다.

프로세스

  • 로컬 디렉터리를 Pod 디렉터리에 복사하려면 다음을 수행합니다.

    $ oc rsync <local-dir> <pod-name>:/<remote-dir> -c <container-name>

    예를 들면 다음과 같습니다.

    $ oc rsync /home/user/source devpod1234:/src -c user-container
  • Pod 디렉터리를 로컬 디렉터리에 복사하려면 다음을 수행합니다.

    $ oc rsync devpod1234:/src /home/user/source

    출력 예

    $ oc rsync devpod1234:/src/status.txt /home/user/

6.6.3. 고급 Rsync 기능 사용

oc rsync 명령은 표준 rsync보다 적은 수의 명령줄 옵션을 표시합니다. oc rsync에서 사용할 수 없는 표준 rsync 명령줄 옵션(예: --exclude-from=FILE 옵션)을 사용하려는 경우 표준 rsync--rsh(-e) 옵션 또는 RSYNC_RSH 환경 변수를 다음과 같이 해결 방법으로 사용할 수 있습니다.

$ rsync --rsh='oc rsh' --exclude-from=FILE SRC POD:DEST

또는 다음을 수행합니다.

RSYNC_RSH 변수를 내보냅니다.

$ export RSYNC_RSH='oc rsh'

그런 다음 rsync 명령을 실행합니다.

$ rsync --exclude-from=FILE SRC POD:DEST

위의 두 가지 예 모두 oc rsh를 원격 쉘 프로그램으로 사용하여 원격 Pod에 연결할 수 있도록 표준 rsync를 구성하고 oc rsync를 실행하는 대신 사용할 수 있습니다.