본문 바로가기

OS/Linux

[Linux] scp 명령으로 서버파일 업로드 다운로드

개발을 진행할 때 종종 배포 인스턴스에 들어가서 로그 파일 등을 다운로드 받거나 외부에서 파일을 올려야 하는 경우가 종종 있다. 물론 여러가지 서버 관리 Tool 을 사용해서 편하게 해당 동작을 할수도 있지만 간단한 Bash shell 만을 이용해서 linux scp 명령으로 서버 파일을 로컬 pc로 다운 또는 업로드를 할 수 있다.

 

scp 기본 옵션

 

간단하게 bach shell에서 scp 옵션을 살펴보면 몇가지가 있다.

 

$ scp /?
usage: scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file]
            [-J destination] [-l limit] [-o ssh_option] [-P port]
            [-S program] source ... target

 

위 옵션 설명만 보면 바로 와닿지는 않는다. 사용법을 다시 정리해 보면

 

scp [옵션] [디렉터리 이름] [원격지_id]@[원격지_ip]:[보낼 경로]

 

예) scp -r testfolder root@192.168.xxx.xxx:/tmp/testclient (-r은  recursive하게 복사)

 

몇가지 주요 옵션은 다음과 같다.

r 디렉토리 내 모든 파일/디렉토리 복사 scp -r
p (소문자) 원본 권한 속성 유지 복사 scp -p
P (대문자) 포트 번호 지정 복사 scp -P [포트번호]
c (소문자) 압축 복사 scp -c
v 과정 출력 복사 scp -v
a 아카이브 모드 복사 scp -a

 

실제 scp 동작 예시

 

ssh port 9999 로 설정되어있는 서버 계정 home 밑의 .viminfo 파일을 로컬 PC 의 현재 디렉토리로 복사

xxx@DESKTOP-GH94F8C MINGW64 /y/Shared/Document
$ scp -P 9999 kindlove@xxx.30.1.xx:~/.viminfo .
kindlove@xxx.30.1.xx's password:
.viminfo                                                                              100% 6599    67.2KB/s   00:00

 

현재 로컬 PC 디렉토리의 VSCode.txt 파일을 ssh port 9999 로 설정되어있는 서버의 계정 home 밑으로 파일 업로드

xxx@DESKTOP-GH94F8C MINGW64 /y/Shared/Document
$ scp -P 9999 ./VSCode.txt kindlove@xxx.30.1.xx:~/
kindlove@xxx.30.1.xx's password:
VSCode.txt                                                                            100%   44     1.0KB/s   00:00

 

-- The End --

'OS > Linux' 카테고리의 다른 글

[Ubuntu] GUI 모드 설정/해제 방법  (0) 2022.01.02