티스토리 뷰

Computer

SCP(OpenSSH secure file copy) 사용법

superroot 2022. 3. 10. 01:17
반응형

SCP(OpenSSH secure file copy) 사용법

 

SCP(OpenSSH secure file copy) 사용법

 

Putty를 사용하여 우분투 서버에서 코딩을 하고 컴파일까지 완료했으나 컴퓨터로 다운로드하지 못해서 과제를 제출을 못하고 있다는 학생이 있었습니다.

Putty를 사용해서 우분투 서버에 ssh로 접속했을 것이라고 판단이 됩니다.
ssh 서비스가 작동 중인 서버라면 scp 명령어를 사용하여 서버로부터 파일을 다운로드하거나, 서버로 파일을 전송할 수 있습니다. 

Windows cmd(명령 프롬프트)에서도 scp 명령어는 기본적으로 사용할 수 있습니다.(별도의 프로그램 불필요)

 

SCP(OpenSSH secure file copy) Manual (man page)

 

scp man page(1)

 

명령어의 사용법에 대해서 잘 모르신다면 Linux에서 man scp를 입력하여 scp의 Manual을 확인할 수 있습니다.

Manual의 SYNOPSIS에서 나오는 [옵션] 은 생략이 가능한 옵션을 의미하며 source... target은 꼭 입력해야 하는 필수 인자를 의미합니다. 

source는 복사할 파일이나 폴더로 생각하시면 됩니다. [무엇을?]

... 은 source를 1개가 아닌 여러개 입력할 수 있다는 의미

target은 복사할 위치 경로를 의미합니다. [어디로 복사]

 

scp man page(2)

 

SCP에서 자주 사용하는 옵션

 


-P port number, ssh Port가 기본 22번이 아닌 경우 port number를 지정해 주는 옵션

-r 파일이 아닌 폴더(디렉터리)를 복사할 때 사용하는 옵션

-p 복사할 파일의 permission, access time 및 modification time을 그대로 유지하면서 복사하는 명령

 

Linux 서버로 파일 업로드(복사) 하는 법

 

ssh 서버 실행

 

윈도 컴퓨터나 다른 컴퓨터에 있는 파일이나 폴더를 Linux 서버로 업로드(복사) 하기 위해서는 Linux 서버에 ssh service가 실행되고 있어야 scp 명령어를 사용하여 전송할 수 있습니다.

ssh 명령어로 Linux에 접속한 사용자라면 이 과정이 불필요합니다.

ssh service가 실행 중이지 않는 경우 sudo service ssh start 명령어를 사용하여 ssh service를 실행시켜주세요.

 

ssh port 확인

 

명령 프롬프트(cmd)를 실행하고 전송할 파일이 있는 폴더로 이동합니다.

예시를 위해 Downloads 폴더에 Mask.jpg 파일을 사용 준비해뒀기 때문에 cd Downloads 명령어를 사용하여 Downloads 폴더로 이동합니다. 

 

cmd 명령 터미널

 

Mask.jpg 파일을 Linux 서버의 /home/superroot/Downloads 폴더로 업로드할 예정입니다.
파일 1개를 전송할 때는 별다른 옵션 없이 scp source target 순으로 명령어를 입력하면 됩니다.

scp Mask.jpg superroot@172.23.105.50:/home/superroot/Downloads/ 명령어를 사용하면 됩니다.

source = 무엇을
target = 어디로, 이런 식으로 기억하시면 좋을 것 같네요.

즉, Mask.jpg 파일을 superroot@172.23.105.50서버의 /home/superroot/Downloads/ 폴더로 복사하라는 의미입니다.

서버 IP 뒤에는 :를 사용하여 추가 경로를 지정해 주셔야 합니다. (:/home/superroot/Downloads/)

 

scp 실행 방법

 

scp로 전송된 파일

 

Linux 서버로 잘 전송이 완료되었습니다.

 

Linux 서버로부터 파일 다운로드(복사) 하는 법

 

scp로 파일 받기(1)

 

Linux 서버로부터 파일을 다운로 하는 법은 위에서 사용했던(Linux 서버로 업로드 명령어) source와 target을 바꿔주기만 하면 됩니다.

 

scp로 파일 받기(2)

 

scp superroot@172.23.105.50:/home/superroot/Downloads/Rockyou/rockyou.txt .

source = superroot@172.23.105.50:/home/superroot/Downloads/Rockyou/rockyou.txt (파일을)
target = .  현재 폴더(.)로 복사하라는 명령어입니다.

윈도 명령 프롬프트를 실행하고, 다운로드할 위치로 먼저 이동한 이후에 위 명령어를 사용하여 다운로드해 주세요.
바로 위 명령어를 사용하는 경우, 자신의 사용자 계정에 바로 파일이 다운로드 됩니다.

 

scp로 다운받은 파일

 

SCP 폴더 업로드 또는 다운로드

 

scp 폴더 전송 명령어(-r)

 

폴더(디렉터리)를 Linux로 업로드(복사) 또는 Linux로부터 다운로드하는 경우 앞에 -r 옵션을 사용해서 폴더(디렉터리) 전체를 전송할 수 있습니다.

scp -r Shell_Script superroot@172.23.108.21:/home/superroot/Downloads/scptest

source = Shell_Script , 전송할 폴더명 'Shell_Script' , 무엇을? Shell_Script 폴더를
target= superroot@172.23.108.21:/home/superroot/Downloads/scptest

172.23.108.21 서버(id=superroot)의 /home/superroot/Downloads/scptest/ 디렉토리로 복사하라는 의미

 

각각 파일마다 전송 상태를 확인할 수 있으며 금방 100% 완료되었습니다.

 

scp 명령어로 전송받은 폴더 및 파일들

 


Linux 서버로부터 다운로드(복사) 원하는 경우, source, target 위치만 서로 바꿔주시면 됩니다.

scp -r superroot@172.23.108.21:/home/superroot/Downloads/scptest .

source = superroot@172.23.108.21:/home/superroot/Downloads/scptest, 무엇을? 172.23.108.21 서버 및 /home/superroot/Downloads/scptest 폴더를

target= .  어디로? 현재 폴더(.)로 복사하라는 의미입니다.

 

반응형
댓글