scp로 원격 파일 송수신하기

목차

SSH로 접속할 수 있는 서버 사이에서 파일을 복사하는 방법입니다. 예시 계정은 lieper이고 원격 서버 이름은 server.example.com입니다. 복사하는 계정에 원본 읽기와 대상 디렉터리 쓰기 권한이 있어야 합니다.

원격에서 로컬로 가져오기

원격 주소에는 계정@호스트:경로 형식을 사용합니다. 로컬 저장 경로가 존재하는지 먼저 확인합니다. 디렉터리 전체를 가져오는 경우에만 -r을 추가합니다.

TERMINAL / CONFIG
mkdir -p /home/lieper/received
scp lieper@server.example.com:/home/lieper/check.sh /home/lieper/received/
scp -r lieper@server.example.com:/home/lieper/reports /home/lieper/received/

원격 경로를 두 번째에 쓰면 로컬 파일을 원격 서버로 보냅니다. 같은 이름의 파일이 있으면 덮어쓸 수 있으므로 배포 파일은 임시 이름으로 올리고 검증한 뒤 교체합니다.

TERMINAL / CONFIG
scp /home/lieper/check.sh lieper@server.example.com:/home/lieper/check.sh.new

포트와 키 파일 지정

scp의 포트 옵션은 대문자 -P입니다. ssh 명령의 소문자 -p와 혼동하기 쉽습니다. -i는 인증에 사용할 개인키 파일을 지정하며 해당 파일을 서버로 전송하는 옵션이 아닙니다.

TERMINAL / CONFIG
scp -P 21887 -i /home/lieper/.ssh/id_ed25519 /home/lieper/check.sh lieper@server.example.com:/home/lieper/check.sh.new

접속 시 표시되는 호스트 키는 별도 확인한 서버 지문과 비교합니다. 연결 오류가 나면 먼저 같은 계정·포트·키로 ssh 로그인이 되는지 확인하고, 그다음 원본과 목적지의 권한을 점검합니다.

송수신 확인

명령 종료 코드, 대상 파일 크기와 체크섬을 확인합니다. 파일이 크거나 반복 동기화가 필요하면 재전송과 변경분 비교에 적합한 rsync도 검토합니다.

TERMINAL / CONFIG
sha256sum /home/lieper/check.sh
ssh -p 21887 lieper@server.example.com 'sha256sum /home/lieper/check.sh.new'

두 해시가 일치하는지 확인한 뒤 대상 서비스에 필요한 실행 권한과 소유권을 설정합니다. 복사 성공만으로 스크립트 실행이나 서비스 반영까지 완료된 것은 아닙니다.

리눅스 › 기본명령어
기본명령어 목록