핵심 요약
- 파일 형식 기준 복사: rsync /home/jon/Desktop/data/*.jpg /home/jon/Desktop/backupdata/
- 파일 크기 기준 복사: rsync --max-size=2k /home/jon/Desktop/data/ /home/jon/Desktop/backupdata/
- 폴더 전체 복사: rsync --recursive /home/jon/Desktop/data /home/jon/Desktop/data2
이 글에서는 리눅스의 rsync 파일 전송 프로그램을 사용해 디렉터리와 파일을 복사하는 방법을 소개합니다. rsync는 단순 복사를 넘어 조건에 맞는 파일만 체계적으로 선택하거나 특정 파일을 제외할 수 있어, 보관용 백업 파일만 골라 저장하고 불필요한 데이터는 걸러내는 데 매우 유용합니다.
명령어 기본 구문
rsync 명령어를 올바르게 사용하려면 아래와 같은 구문 규칙을 따라야 합니다:
rsync [OPTION]... [SRC]... [DEST]
rsync [OPTION]... [SRC]... [USER@]HOST:DEST
rsync [OPTION]... [SRC]... [USER@]HOST::DEST
rsync [OPTION]... [SRC]... rsync://[USER@]HOST[:PORT]/DEST
rsync [OPTION]... [USER@]HOST:SRC [DEST]
rsync [OPTION]... [USER@]HOST::SRC [DEST]
rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
자주 사용되는 주요 옵션은 다음과 같습니다:
- -v, --verbose: 출력량을 늘려 명령이 수행 중인 작업에 대한 더 많은 세부 정보를 표시합니다.
- --info=FLAGS: 상세한 정보성 메시지를 제공합니다.
- --debug=FLAGS: 상세한 디버그 메시지를 제공합니다.
- --msgs2stderr: 디버깅을 위한 특수 출력 처리를 지원합니다.
- -q, --quiet: 오류 메시지를 제외한 나머지 출력을 숨깁니다.
- --no-motd: 데몬 모드의 MOTD(오늘의 메시지) 표시를 생략합니다.
- -c, --checksum: 수정 시간과 크기 대신 체크섬을 기준으로 파일을 비교해 건너뛸지 결정합니다.
- -r, --recursive: 하위 디렉터리까지 재귀적으로 탐색하여 파일을 복사합니다.
- -b, --backup: 백업 파일을 생성합니다.
- --backup-dir=DIR: 원본과 동일한 디렉터리 구조에 백업을 저장합니다.
- --suffix=SUFFIX: 백업된 파일 이름 끝에 접미사를 추가합니다.
- -d, --dirs: 하위 내용을 탐색하지 않고 디렉터리 자체만 전송합니다.
실전 명령어 예제
위에서 살펴본 옵션들을 조합하면 백업 전략을 상황에 맞게 세밀하게 조정할 수 있습니다.
파일 형식별 선택적 복사
rsync /home/jon/Desktop/data/*.jpg /home/jon/Desktop/backupdata/
이 예제에서는 사용자 Jon의 바탕화면에 있는 /data/ 폴더의 모든 JPG 파일이 /backupdata/ 폴더로 복사됩니다. 확장자 패턴을 활용하면 이미지처럼 특정 종류의 파일만 골라 백업할 수 있습니다.
파일 크기 기준으로 복사하기
rsync --max-size=2k /home/jon/Desktop/data/ /home/jon/Desktop/backupdata/
이 예제는 조금 더 복잡한데, 2,048KB보다 큰 파일은 복사하지 않도록 설정되어 있습니다. 즉, 지정한 크기보다 작은 파일만 복사됩니다.
크기 단위는 k, m, g를 사용하면 각각 1,024배수 기준의 킬로바이트, 메가바이트, 기가바이트로 해석되며, kb, mb, gb를 사용하면 1,000배수 기준으로 계산됩니다.
rsync --min-size=30mb /home/jon/Desktop/data/ /home/jon/Desktop/backupdata/
--min-size 옵션으로 반대 동작도 가능합니다. 위 예제에서는 rsync가 30MB 이상인 파일만 복사합니다.
rsync --min-size=30mb --progress /home/jon/Desktop/data/ /home/jon/Desktop/backupdata/
--progress 옵션을 추가하면 진행률이 100%까지 실시간으로 표시되므로, 용량이 큰 파일을 복사할 때 특히 유용합니다.
폴더 전체 복사하기
rsync --recursive /home/jon/Desktop/data /home/jon/Desktop/data2
--recursive 옵션을 사용하면 폴더 전체를 다른 위치로 손쉽게 복사할 수 있습니다. 위 예제에서는 /data2/ 폴더로 복사됩니다.
이 명령은 해당 폴더와 그 안의 모든 내용을 새 위치에 그대로 복사합니다.
특정 파일 제외하기
rsync -r --exclude="*.deb" /home/jon/Desktop/data /home/jon/Desktop/backupdata
폴더 전체를 복사하면서 특정 확장자의 파일만 제외할 수도 있습니다. 위 예제에서는 DEB 파일을 제외합니다. 앞선 예제와 마찬가지로 /data/ 폴더 전체가 /backupdata/로 복사되지만, 그 과정에서 모든 DEB 파일은 복사 대상에서 제외됩니다.