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로 파일 전송하기를 참고하세요.