
리눅스 서버를 운영하다 보면 중요한 파일이나 설정 파일을 다른 서버에 백업해야 하는 경우가 있습니다. 특히 웹서버, 데이터 저장 서버, 개발 서버 등을 운영한다면 정기적인 백업은 서버 장애나 파일 손실에 대비하기 위한 필수 작업입니다.
리눅스에서 다른 서버로 파일을 안전하게 복사하고 동기화할 때 많이 사용하는 명령어가 바로 rsync입니다. rsync는 단순히 파일을 복사하는 것뿐만 아니라 변경된 파일만 전송할 수 있기 때문에 대용량 데이터를 백업할 때도 효율적으로 사용할 수 있습니다.
이번 글에서는 리눅스 서버에서 rsync를 이용해 다른 서버로 파일을 안전하게 백업하는 기본 방법부터 SSH를 이용한 원격 서버 전송, 자주 사용하는 옵션과 주의사항까지 단계별로 알아보겠습니다.
1. rsync란 무엇인가?
rsync는 리눅스와 유닉스 계열 시스템에서 파일과 디렉터리를 동기화할 때 사용하는 명령어입니다.
일반적인 cp 명령어가 같은 서버 내부에서 파일을 복사하는 데 주로 사용된다면, rsync는 네트워크를 통해 다른 서버와 파일을 동기화할 수 있다는 장점이 있습니다.
예를 들어 다음과 같은 상황에서 사용할 수 있습니다.
- 웹사이트 파일을 백업 서버로 복사
- 서버 설정 파일을 다른 서버에 백업
- 특정 디렉터리를 주기적으로 원격 서버에 백업
- 변경된 파일만 전송하여 백업 시간 단축
- 서버 이전을 위한 데이터 복사
- 두 서버 사이의 파일 동기화
특히 rsync는 기존에 백업된 파일과 비교하여 변경된 부분을 중심으로 전송하기 때문에 매번 모든 파일을 다시 전송하는 방식보다 효율적입니다.
2. rsync 설치 여부 확인하기
먼저 현재 서버에 rsync가 설치되어 있는지 확인합니다.
rsync --version
정상적으로 설치되어 있다면 rsync의 버전 정보가 표시됩니다.
만약 설치되어 있지 않다면 사용하는 리눅스 배포판에 따라 설치할 수 있습니다.
Ubuntu 또는 Debian 계열에서는 다음 명령어를 사용할 수 있습니다.
sudo apt update
sudo apt install rsync
CentOS, Rocky Linux, AlmaLinux 계열에서는 다음과 같이 설치할 수 있습니다.
sudo dnf install rsync
구형 CentOS에서는 다음 명령어를 사용할 수도 있습니다.
sudo yum install rsync
3. rsync 기본 사용법
rsync의 기본적인 사용 형식은 다음과 같습니다.
rsync [옵션] 원본 대상
같은 서버에서 디렉터리를 복사하는 경우에는 다음과 같이 사용할 수 있습니다.
rsync -av /home/user/data/ /backup/data/
여기서 -a는 파일의 권한, 소유권, 시간 정보 등을 최대한 유지하면서 복사하는 아카이브 모드입니다.
-v는 전송되는 파일 정보를 화면에 보여주는 옵션입니다.
따라서 -av 옵션은 rsync에서 가장 기본적으로 많이 사용하는 조합 중 하나입니다.
4. 다른 서버로 파일 백업하기
rsync의 가장 유용한 기능 중 하나는 SSH를 이용해 다른 서버로 파일을 전송하는 것입니다.
예를 들어 현재 서버의 /var/www/html/ 디렉터리를 백업 서버의 /backup/web/ 디렉터리로 전송한다고 가정해보겠습니다.
명령어는 다음과 같습니다.
rsync -av /var/www/html/ backupuser@192.168.1.100:/backup/web/
명령어를 실행하면 원격 서버의 사용자 계정 비밀번호를 입력하라는 메시지가 나타날 수 있습니다.
여기에서 backupuser는 원격 서버의 사용자 계정이고 192.168.1.100은 백업 서버의 IP 주소입니다.
즉, 현재 서버에 있는 웹사이트 파일을 원격 백업 서버로 전송하는 방식입니다.
5. SSH를 이용하면 안전하게 백업할 수 있다
rsync는 SSH와 함께 사용할 수 있기 때문에 네트워크를 통해 파일을 전송할 때 보안을 강화할 수 있습니다.
일반적인 사용 방법은 다음과 같습니다.
rsync -av -e ssh /home/user/data/ backupuser@192.168.1.100:/backup/data/
SSH는 서버 간 통신을 암호화하기 때문에 인터넷이나 네트워크를 통해 중요한 파일을 전송할 때 유용합니다.
실제 서버 운영 환경에서는 비밀번호를 매번 입력하는 방식보다 SSH 공개키 인증을 사용하는 경우가 많습니다.
SSH 키를 설정하면 백업 자동화 작업을 구성하기도 편리합니다.
6. rsync에서 자주 사용하는 옵션
rsync에는 다양한 옵션이 있지만 처음 사용할 때는 몇 가지 핵심 옵션부터 이해하는 것이 좋습니다.
-a 옵션
rsync -a source/ destination/
아카이브 모드입니다.
디렉터리를 재귀적으로 복사하면서 파일의 권한, 시간 정보 등을 유지하는 데 사용합니다.
-v 옵션
rsync -v source/ destination/
전송 과정을 자세하게 보여줍니다.
-z 옵션
rsync -avz source/ user@server:/backup/
전송 과정에서 데이터를 압축합니다.
네트워크 환경에 따라 전송량을 줄이는 데 도움이 될 수 있습니다.
--delete 옵션
rsync -av --delete source/ user@server:/backup/
원본에는 없어진 파일을 대상에서도 삭제합니다.
하지만 이 옵션은 매우 주의해서 사용해야 합니다. 원본에서 파일을 삭제하면 백업 서버에서도 해당 파일이 삭제될 수 있기 때문입니다.
따라서 실제 백업에 적용하기 전에 테스트하는 것이 좋습니다.
7. 백업하기 전에 먼저 테스트하는 방법
rsync를 처음 사용하는 경우 실제 파일을 바로 전송하기보다 --dry-run 옵션을 이용하는 것이 안전합니다.
rsync -av --dry-run /var/www/html/ backupuser@192.168.1.100:/backup/web/
--dry-run은 실제 파일을 변경하거나 전송하지 않고 어떤 작업이 실행될 예정인지 미리 확인할 수 있도록 해줍니다.
특히 --delete와 같은 옵션을 사용할 때는 먼저 --dry-run으로 결과를 확인하는 것을 권장합니다.
8. 특정 디렉터리를 제외하고 백업하기
로그 파일이나 임시 파일처럼 백업할 필요가 없는 디렉터리를 제외할 수도 있습니다.
예를 들어 cache 디렉터리를 제외하려면 다음과 같이 사용할 수 있습니다.
rsync -av --exclude='cache/' /var/www/html/ backupuser@192.168.1.100:/backup/web/
여러 개의 디렉터리를 제외해야 한다면 --exclude 옵션을 여러 번 사용할 수도 있습니다.
rsync -av \
--exclude='cache/' \
--exclude='tmp/' \
--exclude='logs/' \
/var/www/html/ backupuser@192.168.1.100:/backup/web/
이 방법을 사용하면 불필요한 파일의 전송을 줄일 수 있습니다.
9. 백업이 제대로 되었는지 확인하기
백업 명령어가 정상적으로 실행되었다고 해서 반드시 백업이 완벽하게 끝났다고 생각해서는 안 됩니다.
원격 서버에 접속하여 파일이 실제로 존재하는지 확인하는 것이 좋습니다.
ssh backupuser@192.168.1.100
백업 디렉터리를 확인합니다.
ls -lah /backup/web/
필요하다면 rsync를 다시 실행하여 변경된 파일이 있는지도 확인할 수 있습니다.
10. rsync를 이용한 정기적인 서버 백업
서버를 안정적으로 운영하려면 한 번 백업하는 것보다 정기적으로 자동 백업하는 것이 중요합니다.
리눅스에서는 cron을 이용하여 rsync 백업 작업을 자동으로 실행할 수 있습니다.
예를 들어 매일 새벽 3시에 백업을 실행하도록 설정할 수 있습니다.
0 3 * * * rsync -avz /var/www/html/ backupuser@192.168.1.100:/backup/web/
다만 자동 백업을 실제 서버에 적용하기 전에 반드시 수동으로 rsync 명령어를 테스트해야 합니다.
또한 SSH 키 인증과 백업 서버의 디스크 공간, 권한 등을 함께 확인해야 합니다.
11. rsync 서버 백업 시 주의할 점
rsync는 강력하고 편리한 도구지만 몇 가지 주의해야 할 사항이 있습니다.
첫째, 원본과 대상 경로의 마지막 / 유무에 따라 결과가 달라질 수 있습니다.
예를 들어 다음 두 명령어는 동작 결과가 다를 수 있습니다.
rsync -av /data/ /backup/
rsync -av /data /backup/
따라서 처음 사용하는 경우 반드시 테스트 환경에서 결과를 확인하는 것이 좋습니다.
둘째, --delete 옵션은 신중하게 사용해야 합니다.
셋째, 중요한 데이터는 하나의 백업 서버에만 저장하지 않는 것이 좋습니다.
서버 자체의 장애뿐만 아니라 백업 서버의 장애까지 발생할 수 있기 때문입니다.
12. 마무리
rsync는 리눅스 서버의 파일을 다른 서버로 안전하고 효율적으로 백업할 수 있는 대표적인 도구입니다.
특히 SSH와 함께 사용하면 원격 서버로 파일을 안전하게 전송할 수 있고, 변경된 파일 중심으로 동기화하기 때문에 반복적인 백업 작업에도 적합합니다.
기본적인 사용 방법은 다음과 같이 정리할 수 있습니다.
rsync -avz /원본/ 사용자@백업서버:/백업경로/
처음 rsync를 사용할 때는 -av 옵션부터 익힌 다음 -z, --exclude, --dry-run, --delete 등의 옵션을 하나씩 추가하는 것이 좋습니다.
무엇보다 서버 백업에서는 백업 명령어를 실행하는 것보다 실제로 복구할 수 있는지 확인하는 과정이 중요합니다.
중요한 서버라면 정기적인 백업과 함께 백업 파일의 정상 여부를 주기적으로 확인하고, 필요할 경우 별도의 저장 공간에도 추가 백업을 구성하는 것이 안전합니다.
rsync를 익혀두면 웹사이트 파일, 서버 설정 파일, 프로젝트 데이터 등 다양한 리눅스 데이터를 효율적으로 관리할 수 있습니다.