본문 바로가기
카테고리 없음

scp 로컬 파일 서버로 옮기기

by Enhydra lutris 2024. 12. 4.

scp란?

Secure Copy Protocal의 약자로, 파일을 시스템간 안전하게 복사하는 프로토콜

ssh 프로토콜을 사용해 암호화된 연결을 통한 데이터 전송을 한다.


필요성

 

  1. 보안성이 높은 파일 전송:
    • scp는 데이터를 암호화하여 전송하므로, 비밀번호나 중요한 데이터를 안전하게 이동할 수 있습니다.
  2. 디렉터리 구조 전송:
    • -r 옵션으로 하위 디렉터리를 포함한 복사를 지원.
  3. 대용량 파일 전송 속도 향상:
    • -C 옵션을 사용하여 전송 속도를 높일 수 있음.
  4. 비표준 SSH 포트 서버:
    • 기본 SSH 포트가 아닌 서버에 연결해야 할 때 -P 옵션이 필요.
  5. 자동화된 전송 스크립트:
    • -i 옵션으로 SSH 키를 지정하면 비밀번호 입력 없이 자동화 가능.

 


사용법

 

  • source: 복사할 파일의 경로 (로컬 또는 원격).
  • destination: 파일을 복사할 경로 (로컬 또는 원격).

 

scp [옵션] [source] [destination]

옵션

옵션 설명 필요한 상황
-r 디렉터리를 복사. 하위 파일/디렉터리 모두 포함. 디렉터리 전체를 복사해야 .
-P 원격 서버의 SSH 포트를 지정. 기본 포트(22) 아닌 다른 포트를 사용하는 서버와 연결해야 .
-C 파일 전송 압축을 활성화. 대용량 파일을 전송할 전송 속도를 높이고 싶을 .
-q 출력 메시지(전송 상태 ) 숨김. 조용히 작업을 수행하고 싶을 .
-i 특정 SSH 파일을 지정하여 인증. 패스워드 대신 SSH 키를 사용하는 경우.
-l 대역폭 제한(kbps 단위). 네트워크 대역폭을 조절하고 싶을 .
-o SSH 옵션을 지정. : -o StrictHostKeyChecking=no (호스트 확인을 무시하고 빠르게 연결해야 ).

예시

# 일반적 사용방법
# 로컬 -> 원격
scp /path/to/local/file username@remote_host:/path/to/remote/destination

# 원격 -> 로컬
scp username@remote_host:/path/to/remote/file /path/to/local/destination

# 원격 -> 원격
scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination



# 옵션 사용방법
# 디렉토리 전체 카피
scp -r /local/dir username@remote_host:/remote/dir

# 비표준 포트 연결
scp -P 2222 /local/file username@remote_host:/remote/file

# 압축 전송
scp -C /local/large_file username@remote_host:/remote/large_file

# ssh키로 인증
scp -i /path/to/private_key /local/file username@remote_host:/remote/file

 

성공시 아래와 같이 출력됨


주의사항

  1. 네트워크 상태:
    • 네트워크 불안정 시 파일 전송이 정상적으로 이뤄지지 않을 수 있음
    • rsync 가 재전송이 가능하기 때문에 rsync를 사용하는게 나을 수 있음
  2. 보안 인증:
    • 호스트키 확인 무시등 잘못된 ssh 설정은 보안 취약성을 초래할 수 있음.
  3. 권한 문제:
    • 대상 경로에 쓰기 권한이 없으면 전송 할수 없음

댓글