-
scp로 터미널에서 파일 주고 받기개발 이야기/인프라 구축 및 운영 2020. 6. 9. 12:13728x90반응형
scp(secure copy) 사용법을 정리해 보겠습니다.
원격지의 서버들은 모두 공인 IP를 가지지 않는 경우가 많고, 보안 문제로 접속하는 터미널 외에는 직접 연결이 안되는 경우가 대부분입니다.
원격지에 172.31.5.31 ~ 172.31.5.39 까지의 서버들이 있으며, 하나의 공인 IP를 통해 172.31.5.31로 접속할 수 있고, 31번으로 전송한 파일들을 32 ~ 39번 서버들로 복사해야 하는 상황을 가정해 보겠습니다.
scp의 기본 사용법은 아래와 같습니다.
scp [옵션] [[user@]host1:]file1 ... [[user@]host2:]file2
1:1 전송뿐만 아니라 n:n 전송도 지원됩니다. 또한 로컬 파일을 원격지로 보내거나 원격지의 파일을 로컬에 복사할 수 있으며, 원격지의 파일을 다른 원격지로 보낼 수 있습니다.
지정할 수 있는 옵션은 아래와 같습니다.
-P -P 3010 처럼 원격지의 ssh 포트 번호를 지정할 수 있습니다. 기본값은 22 입니다. 대문자임을 주의하세요. -r 디렉토리의 하위 폴더, 파일을 모두 복사합니다. -p 복사할 때 원본 파일의 수정/사용 시간, 권한 등이 모두 유지됩니다. -c 압축 후 복사합니다. 용량이 클 때 사용하세요. -v 복사되는 과정을 볼 수 있게 정보를 출력합니다. 아래 몇 가지 샘플을 통해 살펴보고 마무리 하겠습니다. 원격 포트는 모두 3010이라고 가정하겠습니다.
로컬파일을 원격지로 복사
로컬에 /tmp/test.tar 이라는 파일을 172.31.5.32 서버(port number 3010)의 /tmp 폴더에 복사합니다.
scp -P 3010 /tmp/test.tar abc@172.31.5.32:/tmp
로컬파일들을 원격지로 복사
복사할 파일 리스트를 필요한 만큰 나열하면 됩니다.
scp -P 3010 /tmp/test.tar /tmp/test2.tar abc@172.31.5.32:/tmp
원격지 파일을 로컬에 복사
172.31.5.32 서버(port number 3010)의 /tmp/test.tar 파일을 로컬의 /tmp 라는 폴더에 복사합니다.
scp -P 3010 abc@172.31.5.32:/tmp/test.tar /tmp
원격지 파일들을 로컬에 복사
원격지의 파일들은 ""로 감싸서 나열하면 됩니다.
scp -P 3010 abc@172.31.5.33:"/tmp/test.tar /tmp/test2.tar" /tmp
위의 두 예제처럼 -P 옵션은 둘 중 앞에 선언된 원격지의 port로 사용됩니다.
복사할 파일의 원본 위치와 복사될 위치 모두 원격지일 경우 앞에 선언된 원격지의 포트로 인식합니다.
만약 사용되는 포트가 22번이라면 상관없지만 두 원격지 모두 사용하는 포트가 22번이 아닐 때는 앞에 있는 원격지는 -P옵션으로 포트를 지정할 수 있지만 그 다음 원격지부터는 모두 22번으로 인식합니다.
이런 경우에는 ssh_config를 설정하여 해결할 수 있습니다. 상세 내용은 man ssh_config를 통해 확인할 수 있습니다.
아래 예제는 172.31.5.33, 172.31.5.34 서버의 ssh 포트를 3010으로 지정한다고 가정하겠습니다.
vi ~/.ssh/config // 기존에 지정한 내용이 없다면 신규 파일을 생성하게 됩니다. // 파일 내용은 아래와 같이 지정할 수 있습니다. Host 172.31.5.33 Port 3010 Host 172.31.5.34 Port 3010
원격지 파일을 다른 원격지에 복사
172.31.5.35 서버(port number 3020)의 /tmp/test.tar 파일을 172.31.5.33 서버의 /tmp 라는 폴더에 복사합니다. 33번의 ssh port는 위와 같이 ssh_config에 지정했다고 가정하겠습니다.
scp -P 3020 abc@172.31.5.35:/tmp/test.tar abc@172.31.5.32:/tmp
35번 서버의 포트인 3020을 옵션 P로 지정했으며 32번의 포트는 ssh_config에 정의된 포트를 읽어서 복사합니다.
이상입니다. 자주 쓰지 않다보니 할 때마다 검색해서 찾는 저 자신을 보고 한번 정리해야겠다라는 생각이 들더군요.
여러분들에게도 도움이 됬으면 합니다. :)
반응형'개발 이야기 > 인프라 구축 및 운영' 카테고리의 다른 글
pm2 모듈을 부트 스크립트에 등록하는 방법 (0) 2020.08.20 EC2에서 ElastiCache-Redis에 접속하기 (0) 2020.08.07 서버리스 서비스 예제 - 04 [S3 정적 웹사이트에 https 적용하기] (0) 2020.05.18 악성 데몬 찾고 해결하는 방법 (0) 2020.05.12 서버리스 서비스 예제 - 03 [S3에 도메인 연동하기] (0) 2020.05.08