Skip to content
VDS · 머신 접속

scp와 rsync: 파일 복사

컴퓨터와 서버 사이에 파일을 전송하는 두 명령어, scp로 충분한 경우, rsync가 유용한 점, 그리고 끝의 슬래시로 다른 사람의 디렉터리를 덮어쓰지 않는 방법을 설명해요.

업데이트 2026년 8월 23일

그래픽 클라이언트는 일회성 편집에는 편리하지만, 배포와 백업은 명령어 하나로 처리하는 편이 더 쉽습니다.

scp: 일회성 복사

문법은 cp와 같고, 대상만 컴퓨터 주소로 바뀝니다:

scp dump.sql root@203.0.113.10:/root/
scp root@203.0.113.10:/var/log/nginx/error.log ./
scp -r ./site root@203.0.113.10:/var/www/

첫 번째 명령어는 파일을 보내고, 두 번째는 파일을 가져오며, 세 번째는 디렉터리 전체를 복사합니다(-r).

SSH가 다른 포트에서 실행된다면 대문자 -P로 지정하세요:

scp -P 2222 dump.sql root@203.0.113.10:/root/

~/.ssh/config 파일을 사용하면 명령어가 더 짧아집니다: scp dump.sql vds:/root/.

rsync: 동기화

rsync는 차이점만 전송하고, 중단된 전송을 이어서 할 수 있으며, 진행 상황을 표시합니다. 반복 배포에는 훨씬 빠릅니다.

rsync -avz --progress ./site/ root@203.0.113.10:/var/www/example.com/
플래그하는 일
-a권한, 타임스탬프, 링크를 유지합니다
-v파일 목록을 출력합니다
-z스트림을 압축합니다
--progress전송 진행 상황을 표시합니다
--delete내 쪽에 없는 것은 컴퓨터에서 삭제합니다
--exclude불필요한 항목을 건너뜁니다

깔끔한 배포의 예시입니다:

rsync -avz --delete \
  --exclude '.git' --exclude 'node_modules' --exclude '.env' \
  ./site/ vds:/var/www/example.com/

컴퓨터에서 내 쪽으로 복사본을 가져옵니다:

rsync -avz vds:/root/backup-2026-08-23.tar.gz ./backups/

원본 경로 끝의 슬래시는 “디렉터리의 내용물”을 의미합니다. ./site/는 대상 안에 파일을 넣고, ./site는 대상 안에 site 하위 디렉터리를 만듭니다. “사라진” 배포의 절반은 이 때문입니다.

--delete를 사용할 때 주의하세요

--delete 플래그는 컴퓨터의 디렉터리를 내 디렉터리와 정확히 같게 만듭니다: 남는 것은 묻지 않고 삭제됩니다. 먼저 시험 실행을 하세요:

rsync -avzn --delete ./site/ vds:/var/www/example.com/

-n 플래그는 어떤 일이 일어날지만 보여줍니다. 확신이 들면 n을 빼세요.

속도

디스크 속도는 티어별로 제한됩니다: 코어당 쓰기 60 MB/s(최소 60, 최대 400), 읽기는 그 두 배이며, 한도의 세 배에 달하는 버스트는 30초 동안 유지됩니다. 네트워크 대역폭은 최대 500 Mbit/s입니다. VDS-1에서는 큰 압축 파일을 업로드하면 쓰기 한도에 걸리는데, 이는 예상된 동작이며 오류가 아닙니다. 상황을 확인하려면:

df -h
iostat -x 2

흔한 실수

증상원인
Permission denied내 사용자 소유가 아닌 디렉터리에 쓰고 있습니다 — root로 로그인하거나 소유자를 변경하세요
No such file or directory컴퓨터에 디렉터리가 없고 scp는 디렉터리를 만들지 않습니다: 미리 mkdir -p를 실행하세요
파일이 한 단계 위에 저장됨경로에 슬래시가 빠졌거나 더 붙었습니다
rsync: command not found양쪽에 패키지를 설치하세요: apt install -y rsync
배포 후 사이트가 403을 반환함소유자가 설정되지 않았습니다: chown -R www-data:www-data /var/www/example.com

그래픽 클라이언트를 선호한다면 SFTP로 파일 전송하기를 참고하세요.