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 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

Linux 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

PID와 PPID의 의미와 부모·자식 프로세스의 관계를 설명합니다. ps와 pgrep으로 확인하고, 직접 만든 실습 프로세스를 안전하게 종료하는 방법을 익힙니다.

Linux / 명령어 / pwd - 현재 작업 디렉터리 경로 확인

Linux / 명령어 / pwd - 현재 작업 디렉터리 경로 확인

Linux pwd 명령어로 현재 작업 디렉터리를 확인하는 방법을 설명합니다. 논리적 경로와 물리적 경로, 셸 내장 명령과 PWD 변수의 차이도 함께 알아봅니다.

Linux / 명령어 / nslookup - DNS 이름과 레코드 조회

Linux / 명령어 / nslookup - DNS 이름과 레코드 조회

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

Linux / 명령어 / less - 긴 파일을 검색하며 페이지 단위로 보기

Linux / 명령어 / less - 긴 파일을 검색하며 페이지 단위로 보기

Linux less 명령어로 긴 텍스트와 명령 출력을 페이지 단위로 탐색하는 방법을 설명합니다. 검색, 이동, 실시간 갱신과 파이프 사용법을 정리합니다.

Linux / 명령어 / getent - NSS 사용자·그룹·호스트 정보 조회

Linux / 명령어 / getent - NSS 사용자·그룹·호스트 정보 조회

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

Linux / 명령어 / command - 명령어 검색과 별칭 우회 실행

Linux / 명령어 / command - 명령어 검색과 별칭 우회 실행

셸 command 명령어로 함수 검색을 건너뛰어 원래 명령을 실행하고, command -v로 명령 존재 여부를 확인하는 방법을 설명합니다. -p·-V 옵션과 builtin·exec·env의 차이도 정리합니다.

Linux / 명령어 / printenv - 환경 변수 값 출력

Linux / 명령어 / printenv - 환경 변수 값 출력

Linux printenv 명령어로 전체 또는 특정 환경 변수 값을 확인하는 방법을 설명합니다. 셸 변수와 환경 변수의 차이, 종료 상태, NUL 구분 출력과 env와의 차이를 정리합니다.

Linux / 명령어 / clear - 터미널 화면 정리

Linux / 명령어 / clear - 터미널 화면 정리

Linux clear 명령어로 터미널 화면을 정리하는 방법을 설명합니다. 스크롤백을 보존하는 -x 옵션과 Ctrl+L·reset·tput의 차이, TERM 오류 해결법을 다룹니다.

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux screen 명령어로 원격 터미널 세션을 분리하고 다시 연결하는 방법을 설명합니다. 세션·창 관리, 로그 기록, 문제 해결과 nohup·tmux·systemd의 차이를 정리합니다.

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

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

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