게으름을 위한 부지런한 게으름뱅리' 블로그

[Linux] SCP 파일복사 (SCP 명령어 총정리) 본문

IT/Linux

[Linux] SCP 파일복사 (SCP 명령어 총정리)

LazismLee 2024. 8. 19. 21:23
반응형

scp (Secure Copy Protocol) 명령어는 파일을 안전하게 복사하기 위해 사용됩니다. scp 명령어는 SSH 프로토콜을 기반으로 하며, 원격 서버와 로컬 머신 간에 파일을 복사할 수 있습니다.

#로컬 파일을 원격 서버로 복사하기
scp localfile.txt username@remotehost:/path/to/destination/	

#원격 서버의 파일을 로컬 머신으로 복사하기
scp username@remotehost:/path/to/remote/file.txt /local/destination/

#로컬 디렉터리를 원격 서버로 복사하기 (디렉터리 복사)
scp -r localdir/ username@remotehost:/path/to/destination/

#원격 서버의 디렉터리를 로컬 머신으로 복사하기
scp -r username@remotehost:/path/to/remote/dir/ /local/destination/

#파일을 다른 원격 서버로 복사하기 (로컬 머신을 중계로 사용)
scp username1@sourcehost:/path/to/file.txt username2@destinationhost:/path/to/destination/

# 특정 포트를 사용하여 복사하기
scp -P 2222 localfile.txt username@remotehost:/path/to/destination/

#파일 복사 시 진행 상태를 확인하기
scp -v localfile.txt username@remotehost:/path/to/destination/

#파일을 압축하여 전송하기 (압축은 수동으로 해야 함)
tar -czf - localfile.txt | ssh username@remotehost "cat > /path/to/destination/localfile.tar.gz"

#다수의 파일을 원격 서버로 복사하기
scp file1.txt file2.txt file3.txt username@remotehost:/path/to/destination/

#원격 서버에서 파일을 복사하면서 파일 이름을 변경하기
scp username@remotehost:/path/to/remote/file.txt /local/destination/newfile.txt

#서브디렉터리와 함께 디렉터리를 복사할 때 압축하여 복사하기
tar -czf - localdir/ | ssh username@remotehost "tar -xzf - -C /path/to/destination/"

 

현업에서 많이 사용하는 명령어 예시

#원격 서버에서 로컬 서버로 파일을 다운로드하면서 로그 파일을 확인하기
scp username@remotehost:/var/log/syslog /local/destination/

#여러 파일을 원격 서버로 복사하면서 SSH 키를 사용하여 비밀번호 없이 인증하기
scp -i ~/.ssh/id_rsa file1.txt file2.txt username@remotehost:/path/to/destination/

#원격 서버에서 로컬 머신으로 대량의 데이터를 주기적으로 백업하기 (스케줄링)
# cron 작업을 설정하여 정기적으로 실행할 수 있습니다.
scp -r username@remotehost:/data/backup/ /local/backup/


#원격 서버에서 로컬 서버로 파일을 복사하고 복사 후 원격 서버에서 파일 삭제하기
scp username@remotehost:/path/to/file.txt /local/destination/ && ssh username@remotehost 'rm /path/to/file.txt'

#대량의 파일을 원격 서버로 복사하면서 대역폭 제한하기
#-l 옵션을 사용하여 대역폭을 제한합니다
scp -l 5000 localdir/ username@remotehost:/path/to/destination/

#원격 서버에서 로컬 머신으로 대량의 데이터 복사하면서 사용자와 그룹 정보를 유지하기
scp -rp username@remotehost:/path/to/large_directory/ /local/destination/

 

옵션에 대한 설명

1. -r (Recursive)

  • 용도: 디렉터리와 그 하위 파일 및 서브디렉터리를 재귀적으로 복사합니다.
  • 예시: scp -r localdir/ username@remotehost:/path/to/destination/
  • 설명: localdir/ 디렉터리와 그 안의 모든 내용을 원격 서버의 지정된 디렉터리로 복사합니다. 디렉터리 구조를 유지하며 복사할 때 필수 옵션입니다.

2. -p (Preserve)

  • 용도: 파일의 수정 시간, 접근 시간, 소유자 및 권한을 유지하면서 복사합니다.
  • 예시: scp -rp username@remotehost:/path/to/large_directory/ /local/destination/
  • 설명: 파일을 복사하면서 원본 파일의 메타데이터를 그대로 유지합니다. 파일 권한이나 시간 정보를 변경하지 않고 유지해야 할 때 유용합니다.

3. -i (Identity File)

  • 용도: SSH 인증에 사용할 개인 키 파일을 지정합니다.
  • 예시: scp -i ~/.ssh/id_rsa file1.txt username@remotehost:/path/to/destination/
  • 설명: SSH 인증을 위해 기본적으로 사용되는 개인 키 대신 지정된 개인 키 파일을 사용하여 파일을 전송합니다. 비밀번호 없이 인증할 때 필요합니다.

4. -P (Port)

  • 용도: SSH 연결에 사용할 포트를 지정합니다.
  • 예시: scp -P 2222 localfile.txt username@remotehost:/path/to/destination/
  • 설명: 기본 포트(22)가 아닌 다른 포트를 사용하여 SSH 연결을 설정합니다. 원격 서버가 비표준 포트를 사용할 때 유용합니다.

5. -v (Verbose)

  • 용도: 명령어 실행 시 자세한 디버그 정보를 출력합니다.
  • 예시: scp -v localfile.txt username@remotehost:/path/to/destination/
  • 설명: 파일 전송 진행 상황 및 SSH 연결 과정에 대한 세부 정보를 출력합니다. 문제를 진단하거나 디버깅할 때 유용합니다.

6. -l (Limit)

  • 용도: 네트워크 대역폭 제한을 설정합니다.
  • 예시: scp -l 5000 localdir/ username@remotehost:/path/to/destination/
  • 설명: 대역폭을 5000 Kbit/s로 제한하여 네트워크 자원을 과도하게 사용하는 것을 방지합니다. 네트워크 트래픽을 조절할 때 유용합니다.

7. -C (Compression)

  • 용도: 파일 전송 시 데이터를 압축하여 전송 속도를 개선합니다.
  • 예시: scp -C file1.txt username@remotehost:/path/to/destination/
  • 설명: 전송 중 데이터를 압축하여 전송 속도를 높이고, 대역폭 사용량을 줄입니다. 큰 파일을 전송할 때 유용합니다.

8. -o (Option)

  • 용도: SSH 클라이언트 옵션을 추가로 지정합니다.
  • 예시: scp -o "StrictHostKeyChecking=no" file1.txt username@remotehost:/path/to/destination/
  • 설명: SSH 연결에 대한 추가 옵션을 지정합니다. 위 예시에서는 호스트 키 확인을 비활성화하여 자동 스크립트에서 유용합니다.

 

scp man page

반응형
Comments