linux 에서 scp 로 원격지에 파일 전송하기
리눅스 서버 커맨드 라인에서 wget 이나 curl 을 사용해서 파일을 다운로드 받을 수 있습니다.
만약 다운받은 파일을 다른 서버로 복사해야 할 경우 scp 를 사용하는 게 가장 간단하고 보안성도 뛰어납니다.
SCP 사용
scp 는 SSH 기반의 Secure Copy Protocol 프로토콜을 사용하는 호스트간 파일 복사 프로그램입니다.
scp는 ssh 를 기반으로 하므로 상대 호스트에 SSH 로 접속이 가능해야 합니다.
local → remote
scp 는 source 위치를 먼저 적어주면 되므로 local 파일을 remote 에 복사할 때는 아래처럼 SOURCE DESTINATION 형식을 사용하면 됩니다.
scp path/to/local_file remote_host:path/to/remote_file
예로 현재 폴더의 text.txt 를 web_server1 의 /var/www/html 에 전송할 경우 다음과 같이 적어주면 됩니다.
scp text.txt web_server1:/var/www/html
web_server1 같은 원격 호스트는 ~/.ssh/config 에 지정하면 사용이 편리합니다.
port 지정
보안상의 이유로 SSH 기본 포트는 well known port 인 22 번보다는 다른 포트를 사용하는 것을 권장하고 있습니다.
다음은 SSH 포트로 10022 를 사용하는 web_server1 에 text.txt 파일을 복사하는 예제입니다.
scp -P 10022 text.txt web_server1:/var/www/html
매번 포트를 지정하는 것보다는 ~/.ssh/config 에 Port 정보를 등록해 주는 게 더 편리합니다.
remote → local
원격지 파일을 로컬로 복사할 때는 local → remote 와 순서를 반대로 적어주면 됩니다.
scp remote_host:path/to/remote_file path/to/local_file
예로 원격지인 web_server1 의 /var/www/html/test.txt 파일을 로컬의 /tmp/text.txt 에 전송할 경우 다음과 같이 적어주면 됩니다.
scp web_server1:/var/www/html /tmp/text.txt
하위 폴더 포함
기본적으로 scp 는 파일 단위 복사만 가능하지만 recursive 를 의미하는 -r 옵션을 사용하면 디렉터리 복사도 가능합니다.
다음은 web_server1 의 /var/www/html 을 현재 서버의 /opt/ 에 복사합니다.
scp -r web_server1:/var/www/html /opt
2 곳의 원격지에 복사
scp 를 실행하는 서버를 중계기로 사용해서 원격지1에 있는 파일을 직접 원격지2에 전송할 수 있습니다.
즉 remote1 ➡️ local ➡️ remote2 형식으로 사용이 가능합니다.
이렇게 사용하려면 -3 옵션을 주고 REMOTE1 REMOTE2 형식으로 사용하면 되며 다음은 web_server1 에 있는 test.txt 파일을 local 을 통해서 web_server2 에 바로 복사합니다.
scp -3 web_server1:/var/www/html/test.txt web_server2:/var/www/html
같이 보기
- Linux zip/unzip 으로 압축하고 해제하기
- scp, ssh, rsync 를 key 비밀 번호/암호 입력창 없이 사용하기
- rsync 사용법 - data backup 포함
- linux command line 에서 HTTP 로 파일 받기 - wget 사용법