IT 인프라/서버

리눅스 명령어 - scp 명령어 및 옵션

시큐렛 2020. 10. 22. 17:38

SCP란?

scp는 SecureCoPy의 약자로 SSH와 같은 22번 포트를 이용하여 네트워크가 연결되어 있는 곳에 암호화를 통하여 안전하게 데이터를 전송할 수 있는 명령어이다.


 

scp [옵션] [원본서버계정@원본서버IP:복사할데이터경로] [붙여넣을 서버계정@붙여넣을 서버IP:붙여넣을 데이터경로]
ex)
로컬에서 원격지로 데이터를 보낼경우 : 
scp /home/securet/scp_test/copyfile.txt centos@192.168.137.75:/home/centos/scp_test

원격지에서 데이터를 받을경우 :
scp 192.168.137.65:/home/centos/scp_test/copyfile.txt securet@192.168.137.65:/home/centos/scp_test

단! 원본서버 또는 붙여넣을서버가 로컬일 경우 계정@IP정보를 입력하지 않아도 된다. 
옵션정보 : 
c : 데이터를 압축하여 전송한다.
P(대) : 포트번호를 지정하여 전송한다.
p(소) : 시간, 접근시간, 모드를 원본과 같도록 전송한다.
r : 디렉터리를 전송한다.
v : 전송과정을 상세히 출력하여 전송한다.

 

데이터를 원격지로 보낼경우:

소스 : 칼리리눅스 목적지 : centos7

로컬의 scp폴더에 vi 편집기를 사용하여 보낼데이터(copyfile.txt)를 만든다.
scp_test 폴더에 copyfile.txt가 잘 생성이 된것을 확인할 수 있다.

이제 scp명령어를 이용하여 원격지(75번서버의 scp_test폴더)로 copyfile.txt를 전송해보자

scp /home/securet/scp_test/copyfile.txt centos@192.168.137.75:/home/centos/scp_test

명령어를 치니 centos계정의 비밀번호를 확인한다.

75번 서버의 centos계정의 비밀번호를 입력 후 엔터를 누른다.

위 사진과 같이 copyfile.txt가 100%전송이 다 됐다고 표시가 됐다.

75번서버에 접속하여 잘 전송이 완료되었는지 확인해본다.

75번서버의 scp_test 디렉토리에 잘 전송이 된것을 확인할수있다.

scp permission denied 발생시 :

1. chown으로 데이터의 소유자를 변경해본다.

2. chmod로 허가를 600 또는 400으로 변경해본다.

3.원격지의 복사할 곳의 소유권을 확인해본다 (centos로 보냈는데 소유권이 다르면 denied 발생)