[Linux] scp를 이용해 로컬과 원격에 파일 전송하기
업데이트(2018.03.16): 옵션 및 설명 추가
Linux 기반 운영체제에서 scp 명령어를 사용해서 로컬-원격 사이에 파일을 주고 받아보자.
환경 및 선수조건
- Linux
- Bash shell(/bin/bash)
scp 명령어
기본
scp
: secure copy (remote file copy program)의 줄임말로ssh
를 이용해 네트워크로 연결된 호스트간에 파일을 주고 받는 명령어입니다.로컬 -> 리모트 (보내기)
,리모트 -> 로컬 (가져오기)
와리모트 -> 리모트 (다른 호스트끼리 전송)
로 복사가 모두 가능합니다.ssh
를 이용하기 때문에 password를 입력하거나 ssh 키파일과 같은 identity file을 이용해 파일 송수신이 가능합니다.
기본 사용 문법
- manual page에 있는 자료
scp [options ...] [source] [target]
- 기본 형태
# Local -> Remote
scp 목적파일명(경로) 유저명@IP주소:목적디렉토리
# Remote -> Local
scp 유저명@IP주소:파일디렉토리 목적파일명(경로)
# Remote(source) -> Remote(target)
scp 유저명@IP주소:파일디렉토리 유저명@IP주소:파일디렉토리
옵션
-r
: 재귀적으로 모든 폴더들을 복사합니다. 폴더를 복사할 때 사용하는 옵션으로 이때 전송하고자 하는 대상은 폴더로 지정하면 됩니다. 아래에 예제를 참고하시면 됩니다. symbolic link가 있는 경우에는 target에 symbolic link를 생성하지 않고 symbolic link가 가리키는 파일 혹은 폴더를 복사합니다.-P
: ssh 포트를 지정하는 옵션-i
: ssh 키파일과 같은 identity file의 경로를 지정하는 옵션-v
: verbose 모드로 상세내용을 보며 디버깅을 할 때 사용합니다.-p
: 파일의 수정 시간과 권한을 유지합니다.
예제
로컬 -> 리모트
- 패스워드 사용하는 경우
scp ~/test.txt twpower@[IP주소]:/home/twpower
-i
옵션- identity file을 지정해서 사용할 때
scp -i ~/.ssh/twpower-private-server ~/test.txt twpower@[IP주소]:/home/twpower
-r
옵션- 폴더를 복사하는 경우
scp -r ~/test_folder/ twpower@[IP주소]:/home/twpower
-P
옵션
scp -P 22 ~/test.txt twpower@[IP주소]:/home/twpower
리모트 -> 로컬
- 패스워드 사용하는 경우
scp twpower@[IP주소]:/home/twpower/test.txt /Users/taewoo
-i
옵션- identity file을 지정해서 사용할 때
scp -i ~/.ssh/twpower-private-server twpower@[IP주소]:/home/twpower/test.txt /Users/taewoo
-r
옵션- 폴더를 복사하는 경우
scp -r twpower@[IP주소]:/home/twpower/test_folder /Users/taewoo
-P
옵션
scp -P 22 twpower@[IP주소]:/home/twpower/test.txt /Users/taewoo