7.6. OpenShift Container Platform 컨테이너에 또한 해당 컨테이너에서 파일 복사
CLI에서 rsync
명령을 사용하여 컨테이너의 원격 디렉터리에서 또는 원격 디렉터리로 로컬 파일을 복사할 수 있습니다.
7.6.1. 파일을 복사하는 방법 이해
oc rsync
명령 또는 원격 동기화는 백업 및 복원을 위해 Pod에서 및 Pod로 데이터베이스 아카이브를 복사하는 유용한 툴입니다. 실행 중인 Pod에서 소스 파일의 핫 리로드를 지원하는 경우 개발 디버깅을 위해 oc rsync
를 사용하여 소스 코드 변경 사항을 실행 중인 Pod에 복사할 수도 있습니다.
$ oc rsync <source> <destination> [-c <container>]
7.6.1.1. 요구사항
- 복사 소스 지정
oc rsync
명령의 소스 인수는 로컬 디렉터리 또는 pod 디렉터리를 가리켜야 합니다. 개별 파일은 지원되지 않습니다.Pod 디렉터리를 지정할 때는 디렉터리 이름 앞에 Pod 이름을 붙여야 합니다.
<pod name>:<dir>
디렉터리 이름이 경로 구분자(
/
)로 끝나는 경우 디렉터리의 콘텐츠만 대상에 복사됩니다. 그러지 않으면 디렉터리 및 해당 콘텐츠가 대상에 복사됩니다.- 복사 대상 지정
-
oc rsync
명령의 대상 인수는 디렉터리를 가리켜야 합니다. 해당 디렉터리가 존재하지 않지만rsync
가 복사에 사용되는 경우 사용자를 위해 디렉터리가 생성됩니다. - 대상의 파일 삭제
-
--delete
플래그는 로컬 디렉터리에 없는 파일을 원격 디렉터리에서 삭제하는 데 사용할 수 있습니다. - 파일 변경 시 연속 동기화
--watch
옵션을 사용하면 명령에서 파일 시스템 변경의 소스 경로를 모니터링하고 변경이 발생하면 변경 사항을 동기화합니다. 이 인수를 사용하면 명령이 영구적으로 실행됩니다.빠르게 변경되는 파일 시스템으로 인해 동기화를 연속으로 호출하지 않도록 동기화는 잠시 후에 수행됩니다.
--watch
옵션을 사용할 때의 동작은 일반적으로oc rsync
에 전달되는 인수를 포함하여oc rsync
를 수동으로 반복해서 호출하는 것과 사실상 동일합니다. 따라서-delete
와 같이oc rsync
를 수동으로 호출하는 데 사용하는 것과 같은 플래그를 통해 해당 동작을 제어할 수 있습니다.
7.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/
7.6.3. 고급 Rsync 기능 사용
oc rsync
명령은 표준 rsync
보다 적은 수의 명령줄 옵션을 표시합니다. oc rsync
에서 사용할 수 없는 표준 rsync
명령줄 옵션(예: --exclude-from=FILE
옵션)을 사용하려는 경우 표준 rsync
의 --rsh
(-e
) 옵션 또는 RSYNC_RSH
환경 변수를 다음과 같이 해결 방법으로 사용할 수 있습니다.
$ rsync --rsh='oc rsh' --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>
또는 다음을 수행합니다.
RSYNC_RSH
변수를 내보냅니다.
$ export RSYNC_RSH='oc rsh'
그런 다음 rsync 명령을 실행합니다.
$ rsync --exclude-from=<file_name> <local-dir> <pod-name>:/<remote-dir>
위의 두 가지 예 모두 oc rsh
를 원격 쉘 프로그램으로 사용하여 원격 Pod에 연결할 수 있도록 표준 rsync
를 구성하고 oc rsync
를 실행하는 대신 사용할 수 있습니다.