Linux / 명령어 / scp - SSH로 로컬·원격 파일 복사

scp는 SSH를 이용해 로컬과 원격 시스템 사이에 파일을 복사합니다. 보통 사용자@호스트:경로 형태로 원격 위치를 나타냅니다.

scp 명령어란?

현재 OpenSSH의 scp는 기본적으로 SFTP 프로토콜을 사용하며, 구형 서버와 호환해야 할 때만 레거시 SCP 프로토콜을 선택합니다. 복사 방향은 원본과 대상의 순서로 결정됩니다. 파일 이름에 콜론이 포함되거나 원격 셸이 해석하는 특수문자가 있을 때는 경로 구문과 인용에 주의하세요.

기본 문법

scp [옵션] 원본 대상

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man scp으로 현재 시스템의 설명을 확인하세요.

사용 예제

로컬 파일을 서버로 복사

대상 경로의 기존 파일이 교체될 수 있으니 먼저 확인합니다.

scp report.txt alice@server.example.com:/home/alice/

서버 파일을 로컬로 복사

원격 파일을 현재 디렉터리로 가져옵니다.

scp alice@server.example.com:/home/alice/report.txt .

디렉터리 복사

-r을 지정해 하위 파일을 포함합니다. 예상 크기를 확인하세요.

scp -r project/ alice@server.example.com:/home/alice/

전송 방향과 결과 확인하기

scp 로컬파일 사용자@호스트:경로는 로컬에서 원격으로 복사합니다. 다음의 서버·경로는 설명용이므로 실제 권한과 저장 공간을 확인해 바꾸세요.

scp report.txt user@server.example.test:/tmp/report.txt

성공 시 전송 진행률이 표시되거나, 출력 설정에 따라 아무 메시지 없이 끝날 수 있습니다. 원격 서버에서 ssh user@server.example.test 'ls -lh /tmp/report.txt'로 파일 이름과 크기를 확인하세요.

콜론 앞뒤 위치가 전송 방향을 결정합니다. 기존 원격 파일을 덮어쓸 수 있으므로 목적지 경로를 재확인하세요. 중단된 대용량 전송을 재개하거나 여러 파일을 반복 동기화하려면 rsync가 더 적합할 수 있습니다.

주요 옵션과 형식

옵션·형식 설명
-r 디렉터리를 재귀적으로 복사합니다.
-P 포트 SSH 서버 포트를 지정합니다. ssh의 -p와 달리 대문자입니다.
-i 키파일 인증에 사용할 개인키를 지정합니다.
-p 파일의 수정 시각과 권한을 가능한 범위에서 보존합니다.
-O 호환성 필요 시 레거시 SCP 프로토콜을 사용합니다.

사용할 때 주의할 점

대상 파일이 존재하면 덮어쓸 수 있으므로 경로와 계정을 확인하고 중요한 파일은 먼저 백업하세요. -O의 구형 프로토콜은 원격 셸 해석과 보안 위험이 있어 일반적으로 사용하지 않습니다. scp는 변경 파일만 비교해 동기화하거나 삭제 상태를 맞추는 도구가 아닙니다. 그러한 작업에는 rsync가 적합할 수 있습니다.

자주 묻는 질문

scp에서 포트 옵션은 -p인가요?

아니요. 서버 포트는 대문자 -P입니다. 소문자 -p는 파일의 시각과 권한 보존 옵션입니다.

공식 문서

옵션의 정확한 동작과 구현별 차이는 scp 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / top - 프로세스 자원 사용량 실시간 확인

Linux / 명령어 / top - 프로세스 자원 사용량 실시간 확인

Linux top 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / sed - 스트림에서 텍스트 검색·치환

Linux / 명령어 / sed - 스트림에서 텍스트 검색·치환

Linux sed 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux / 명령어 / tail - 파일의 마지막 내용과 로그 실시간 확인

Linux tail 명령어로 파일의 마지막 행과 바이트를 확인하고 새로 추가되는 로그를 추적하는 방법을 설명합니다. -n, -f, -F 차이와 로그 로테이션, 필터링 및 여러 파일 모니터링 예제를 정리합니다.

Linux 강좌 / 파일 권한 읽고 바꾸기와 sudo 사용법

Linux 강좌 / 파일 권한 읽고 바꾸기와 sudo 사용법

리눅스 파일과 디렉터리의 읽기·쓰기·실행 권한을 해석하고 chmod로 실습 파일의 권한을 바꿉니다. sudo의 사용 범위와 권한 오류를 진단하는 순서도 설명합니다.

Linux / 명령어 / traceroute - 목적지까지 라우터 경로 추적

Linux / 명령어 / traceroute - 목적지까지 라우터 경로 추적

Linux traceroute 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / chmod - 파일·디렉터리 접근 권한 변경

Linux / 명령어 / chmod - 파일·디렉터리 접근 권한 변경

Linux chmod 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

리눅스 Bash의 ;, &&, ||, &, |, |&, ! 차이를 종료 상태와 실제 예제로 설명합니다. 조건부 실행, 백그라운드 작업, 파이프라인과 pipefail 사용법까지 정리합니다.

Linux / 명령어 / head - 파일 앞부분의 줄과 바이트 출력

Linux / 명령어 / head - 파일 앞부분의 줄과 바이트 출력

Linux head 명령어로 파일의 처음 몇 줄이나 바이트를 출력하는 방법을 설명합니다. 여러 파일, 음수 개수, 파이프 활용과 바이너리 데이터 주의점도 정리합니다.

Linux / Memo

Linux / Memo

리눅스와 관련된 여러 정보를 정리합니다.

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux unxz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.