이전 글목록 보기다음 글
linux2026-09-11T04:34:10.615Z

rsync : linux 파일/폴더 복사하기

Anya2_Forger profileAnya2_Forger
edited- linuxkernel.png

Linux에서 파일/폴더를 복사하는 방법은 여러 가지가 있지만, 실무에서는 **cprsync**를 가장 많이 사용합니다.

1. cp — 가장 기본적인 복사

파일 하나 복사

cp file.txt /home/pion79/backup/

file.txtbackup 폴더에 복사합니다.

파일 이름을 바꿔서 복사할 수도 있습니다.

cp file.txt /home/pion79/backup/newfile.txt

폴더 복사

폴더는 -r 또는 -R이 필요합니다.

cp -r project /home/pion79/backup/

결과:

backup/
└── project/
    ├── file1
    └── file2

여러 파일 복사

cp file1.txt file2.txt /backup/

파일 속성까지 보존

cp -a project /backup/

-aarchive 모드로, 권한/소유자/시간 등의 속성을 최대한 보존하면서 복사합니다.


2. rsync — 대량 복사/백업에 매우 유용

rsync는 단순히 "복사"하는 것보다 **동기화(sync)**에 가깝습니다.

예를 들어:

원본
/home/pion79/project/
        ↓
대상
/home/pion79/backup/project/

라고 할 때,

rsync -av /home/pion79/project/ /home/pion79/backup/project/

를 실행하면 원본과 대상의 차이를 확인해서 필요한 파일만 복사합니다.


2-1. 가장 기본적인 형태

rsync [옵션] 원본 대상

예:

rsync -av source/ backup/

여기서:

-a

는 archive 모드

-v

는 진행 내용을 화면에 보여주는 verbose입니다.

따라서 보통:

rsync -av source/ backup/

를 기본형으로 기억하면 좋습니다.


3. rsync에서 가장 중요한 /

초보자에게 가장 중요한 부분입니다.

다음 두 명령은 결과가 다릅니다.

/가 있는 경우

rsync -av project/ backup/

의 의미:

project 안의 내용물backup으로 복사

결과:

backup/
├── file1
├── file2
└── src/

/가 없는 경우

rsync -av project backup/

의 의미:

project 폴더 자체backup 안에 복사

결과:

backup/
└── project/
    ├── file1
    ├── file2
    └── src/

따라서 다음처럼 기억하면 쉽습니다.

project/       → project 안의 내용
project        → project 폴더 자체

4. rsync는 왜 cp보다 좋은가?

예를 들어 100GB짜리 폴더가 있다고 합시다.

처음에는:

rsync -av project/ backup/

100GB를 복사합니다.

그 후 file1.txt 하나만 수정했습니다.

다시:

rsync -av project/ backup/

하면 변경되지 않은 파일은 다시 복사하지 않고, 필요한 변경사항만 처리합니다.

그래서 백업에 특히 좋습니다.

첫 번째
100GB ───────────────→ 100GB

두 번째
변경된 파일 몇 MB ──→ 몇 MB

5. 진행률을 보고 싶다면

대용량 파일을 복사할 때 매우 유용합니다.

rsync -avh --progress source/ backup/

-h는 용량을 사람이 읽기 편하게 표시합니다.

예:

1.2G
350M
25K

6. 전체 진행률을 보고 싶다면

파일이 아주 많을 때는:

rsync -avh --info=progress2 source/ backup/

이 방식이 편합니다.

예:

1.25G  32%   85.32MB/s    0:00:42

7. 삭제까지 동기화하려면 --delete

이것은 주의해서 사용해야 합니다.

rsync -av --delete source/ backup/

원본에서 파일을 삭제하면 대상에서도 삭제합니다.

예:

원본                    백업

A.txt                   A.txt
B.txt                   B.txt
C.txt                   C.txt

원본에서 C.txt 삭제:

원본                    백업

A.txt                   A.txt
B.txt                   B.txt
                        C.txt

다시:

rsync -av --delete source/ backup/

하면:

원본                    백업

A.txt                   A.txt
B.txt                   B.txt

C.txt도 백업에서 삭제됩니다.

따라서 백업할 때 무조건 --delete를 붙이는 것은 추천하지 않습니다.


8. 특정 파일/폴더 제외

예를 들어 node_modules를 제외하고 싶다면:

rsync -av \
  --exclude='node_modules/' \
  project/ backup/

여러 개도 가능합니다.

rsync -av \
  --exclude='node_modules/' \
  --exclude='.git/' \
  --exclude='dist/' \
  project/ backup/

웹/Node 프로젝트를 백업할 때 상당히 유용합니다.


9. 다른 디스크로 복사

예를 들어 전에 설정하신 USB가:

/home/pion79/usb

에 mount되어 있다면,

rsync -avh --progress \
  /home/pion79/Projects_Laptop/ \
  /home/pion79/usb/Projects_Laptop/

처럼 사용할 수 있습니다.

특히 대용량 디렉터리를 USB로 백업할 때 rsync가 좋습니다.


10. SSH를 이용한 다른 컴퓨터로 복사

rsync의 아주 강력한 기능입니다.

예:

rsync -avh project/ pion79@192.168.0.20:/home/pion79/backup/project/

내 컴퓨터의 project를 다른 Linux 컴퓨터로 전송합니다.

반대로 가져올 수도 있습니다.

rsync -avh pion79@192.168.0.20:/home/pion79/project/ ./project/

즉:

내 컴퓨터
     │
     │ SSH + rsync
     ↓
다른 Linux 컴퓨터

11. rsync에서 자주 사용하는 옵션

옵션

의미

-a

archive, 권한/시간 등을 보존

-v

복사 내용을 표시

-h

용량을 사람이 읽기 쉽게 표시

--progress

파일별 진행률 표시

--info=progress2

전체 진행률 표시

--delete

원본에 없는 파일을 대상에서 삭제

--exclude

특정 파일/폴더 제외

-n

실제 복사하지 않고 테스트

-z

네트워크 전송 시 압축

특히 -n은 꼭 알아두는 것을 추천합니다.


12. rsync -n — 실제 복사 전에 테스트

예를 들어:

rsync -avhn source/ backup/

이렇게 하면 실제로 파일을 복사하지 않고, 무엇을 복사할 것인지 보여줍니다.

즉:

실제 실행
rsync -av source/ backup/

안전하게 먼저 확인
rsync -avhn source/ backup/

특히 --delete를 사용할 때:

rsync -avhn --delete source/ backup/

로 먼저 확인하는 습관을 추천합니다.


13. cprsync를 언제 사용할까?

간단하게 정리하면:

파일 하나
    ↓
cp

작은 폴더 한 번 복사
    ↓
cp -r 또는 cp -a

대용량 폴더
    ↓
rsync

반복적인 백업
    ↓
rsync

변경된 것만 다시 복사
    ↓
rsync

USB/외장디스크 백업
    ↓
rsync

다른 Linux 컴퓨터로 복사
    ↓
rsync + SSH

제가 추천하는 rsync 기본 명령

일단 이것 하나를 익히시면 됩니다.

rsync -avh --progress 원본/ 대상/

그리고 삭제까지 원본과 완전히 똑같이 만들고 싶을 때만:

rsync -avh --progress --delete 원본/ 대상/

를 사용하세요.

특히 rsync/ 하나 때문에 결과가 달라지고 --delete는 실수하면 파일을 삭제할 수 있기 때문에, 처음에는 -n(dry-run)으로 확인하는 습관을 들이는 것이 좋습니다.

Comments

Log in to comment

Loading comments...
이전 글목록 보기다음 글

당신의 이야기를 기다리고 있습니다