본문 바로가기
OS/Linux

SCP를 이용한 파일 및 폴더 전송 가이드

by Dev_카페인 2024. 11. 23.
반응형

SCP를 이용한 파일 및 폴더 전송 가이드

scp는 SSH를 기반으로 안전하게 파일 및 디렉토리를 복사할 수 있는 유용한 도구입니다. 이 포스트에서는 scp를 사용하여 파일과 폴더를 로컬에서 원격 서버로 전송하거나, 반대로 서버에서 로컬로 다운로드하는 방법을 단계별로 설명하겠습니다.

 

 

1. SCP란?

SCP(Secure Copy Protocol)는 SSH를 통해 파일과 디렉토리를 안전하게 전송하기 위한 프로토콜입니다. scp 명령어는 보안 연결을 설정하여 파일을 복사하며, 로컬 시스템과 원격 서버 간의 파일 이동에 널리 사용됩니다.

 

2. SCP 명령어 기본 형식

scp [옵션] [출발지 경로] [사용자명]@[서버 주소]:[목적지 경로]
구성 요소 설명
scp 파일 전송 명령어
옵션 전송 시 추가적인 설정(예: -r, -P)
[출발지 경로] 복사할 파일 또는 디렉토리의 경로
[사용자명] 원격 서버에 접속할 사용자 계정
[서버 주소] 원격 서버의 IP 주소 또는 도메인
[목적지 경로] 파일 또는 디렉토리를 저장할 경로

 

3. 파일 전송 방법

3.1 로컬 파일을 원격 서버로 전송

scp -P 22 /path/to/local/file.txt user@192.168.1.100:/path/to/remote/directory/
  • 옵션 설명:
    • -P 22: SSH 연결에 사용할 포트를 지정(기본값은 22).
    • /path/to/local/file.txt: 로컬 시스템에 있는 파일 경로.
    • user@192.168.1.100: 원격 서버 사용자 계정과 IP 주소.
    • /path/to/remote/directory/: 서버에서 저장될 디렉토리 경로.

3.2 원격 서버의 파일을 로컬로 다운로드

scp -P 22 user@192.168.1.100:/path/to/remote/file.txt /path/to/local/directory/
 

 

4. 디렉토리 전송 방법

4.1 로컬 디렉토리를 원격 서버로 전송

디렉토리를 전송할 때는 -r 옵션(재귀적 복사)을 추가합니다.

scp -r -P 22 /path/to/local/directory user@192.168.1.100:/path/to/remote/directory/
  • 옵션 설명:
    • -r: 디렉토리와 하위 파일/폴더를 모두 복사.

폴더 전송시 cmd 화면
ls -al 명령어 입력시

4.2 원격 서버의 디렉토리를 로컬로 다운로드

scp -r -P 22 user@192.168.1.100:/path/to/remote/directory /path/to/local/directory/
 

 

5. 유용한 추가 옵션

옵션 설명
-P 원격 서버의 SSH 포트를 지정(기본값은 22).
-r 디렉토리와 하위 파일/폴더를 재귀적으로 복사.
-v 전송 과정의 자세한 로그를 출력(디버깅에 유용).
-C 파일을 전송하기 전에 압축하여 전송 속도 개선.
-i 특정 SSH 키를 사용하여 인증.

 

 

6. 전송 중 발생할 수 있는 오류 및 해결 방법

6.1 is not a regular file 오류

  • 원인: 디렉토리를 전송하려 했지만 -r 옵션을 사용하지 않음.
  • 해결: 디렉토리를 전송하려면 -r 옵션을 추가하세요.
scp -r /path/to/directory user@192.168.1.100:/path/to/destination/

6.2 Permission denied 오류

  • 원인: 원격 서버 경로에 대한 쓰기 권한이 없음.
  • 해결: 서버 관리자로부터 경로 권한을 부여받거나 적절한 디렉토리를 지정하세요.

6.3 No such file or directory 오류

  • 원인: 전송하려는 경로나 파일 이름이 잘못되었음.
  • 해결: 파일 또는 디렉토리 경로를 확인하고 올바르게 지정하세요.

 

7. 고급 팁

7.1 디렉토리 압축 후 전송

  • 디렉토리를 압축하면 전송 속도가 개선되고, 서버에서 쉽게 관리할 수 있습니다.

압축 후 전송 예제:

# 로컬에서 디렉토리 압축
zip -r my_project.zip my_project/

# 압축 파일 전송
scp -P 22 my_project.zip user@192.168.1.100:/home/user/

# 서버에서 압축 해제
ssh user@192.168.1.100 "unzip /home/user/my_project.zip -d /home/user/"

7.2 SSH 키 인증 사용

  • 비밀번호 대신 SSH 키를 사용하여 빠르고 안전하게 인증할 수 있습니다:
     
scp -i ~/.ssh/my_key.pem -P 22 file.txt user@192.168.1.100:/home/user/

 

 

8. 마무리

scp는 간단하면서도 강력한 파일 전송 도구입니다. 파일과 디렉토리 전송, SSH 키 인증, 압축 활용 등 다양한 기능을 활용하면 효율적인 파일 전송이 가능합니다. 위 내용을 바탕으로 여러분의 환경에서 안전하고 빠른 전송을 경험해 보세요! 🚀

반응형