라즈베리 파이를 백업하는 방법

Raspberry Pi Rsync Backup

라즈베리 파이를 백업하는 것은 복잡할 필요가 없습니다. 많은 정교한 백업 솔루션이 있지만, 때로는 가장 간단한 접근이 가장 효과적입니다. 이 기사에서는 rsync를 사용하는 방법을 보여드리겠습니다. 이것은 신뢰할 수 있는 로컬 백업을 만드는 데 완벽한 작고 강력한 명령줄 도구입니다.

Rsync가 라즈베리 파이를 백업하는 최고의 도구인 이유

Rsync(원격 동기화)는 라즈베리 파이에 미리 설치된 강력한 파일 동기화 및 전송 도구입니다.

Rsync의 핵심 기능은 파일을 한 위치에서 다른 위치로 효율적으로 복사하는 것이지만, 단순한 복사 작업보다 훨씬 умна입니다. 변경된 파일의 일부만 전송하므로 시간과 시스템 자원을 절약할 수 있습니다. 이는 자주 변경되는 대용량 파일을 백업할 때 특히 유용합니다.

Man Rsync Raspberry

저는 주로 라즈베리 파이에서 중요한 사용자 데이터를 백업하는 데 rsync를 사용합니다. 예를 들어, 라즈베리 파이에서 사진 갤러리 서버를 운영하고 있으며, rsync는 모든 소중한 이미지를 외부 드라이브에 자동으로 감지하고 복사하여 백업 사본을 유지하는 데 완벽합니다.

전체 파일을 복사하는 도구와 달리, rsync는 변경된 부분만 전송하므로 백업 속도가 significantly 빨라지고 SD 카드의 마모를 줄일 수 있습니다. 명령행 인터페이스는 cron 작업과의 자동화에 적합하며, 내장된 체크섬 기능은 백업 무결성을 보장합니다. 무엇보다도 rsync의 경량 특성 덕분에 백업 프로세스가 실행 중이지 않는 한 라즈베리 파이를 느리게 하지 않으며, SD 카드의 저장 공간도 너무 많이 차지하지 않습니다.

이러한 이유로 저는 rsync가 제 요구에 가장 적합한 솔루션이라고 믿으며, 신뢰성 있고 효율적인 백업 시스템을 원하는 많은 다른 라즈베리 파이 사용자에게도 이상적인 선택이라고 생각합니다.

Rsync를 사용하여 라즈베리 파이 파일 및 폴더 백업하기

디렉토리를 백업하는 가장 간단한 방법은 다음과 같은 명령어를 사용하는 것입니다:

rsync -av /source/directory /backup/location

예를 들어, 제 홈 디렉토리를 “/media/backup”에 마운트된 외부 드라이브로 백업하기 위해 다음 명령어를 사용합니다:

rsync -av --delete /home/david/immich-app /media/backup

제 사진 라이브러리 데이터베이스를 백업합니다.

Rsync Raspberry Folder Backup

여기 각 옵션의 역할은 다음과 같습니다:

  • -a는 아카이브 모드를 활성화하여 파일 권한, 소유권 및 타임스탬프를 보존합니다.
  • -v는 상세 출력을 제공하여 복사되는 내용을 볼 수 있도록 합니다.
  • --delete는 소스에 더 이상 존재하지 않는 파일을 백업 위치에서 제거합니다.

참고: 또한, rsync는 경로의 후행 슬래시에 주의해야 합니다. 소스에 슬래시가 있을 경우 “이 디렉토리의 내용을 복사”하는 것인데, 슬래시가 없으면 ‘디렉토리 자체’를 복사합니다. 예를 들어, rsync -av --delete /home/pi/folder /media/backup는 ‘folder’의 내용을 ‘backup’으로 직접 복사하는 반면, 슬래시가 없으면 ‘folder’ 디렉토리 자체를 ‘backup’으로 복사합니다.

라즈베리 파이 백업 확인하기

백업이 제대로 작동했는지 확인하기 위해서는 검증이 필요합니다. 이를 확인하는 가장 간단한 방법은 rsync의 드라이 런 옵션을 사용하는 것입니다. 이 옵션은 -n 또는 --dry-run으로 지정할 수 있습니다. 다음 명령어를 실행하면:

rsync -avn --delete /home/pi/folder /media/backup

백업이 최신인 경우 전송해야 할 파일이 없다는 결과가 나와야 합니다.

Rsync Raspberry Backup Dry Run

보다 철저한 검증을 위해서는 rsync 명령에 -c 또는 --checksum 옵션을 추가할 수 있습니다. 기본 타임스탬프 및 크기 비교보다 느리지만, 체크섬을 계산하여 소스와 백업 간의 모든 파일이 완전히 동일하다는 것을 보장합니다. 다음을 실행하세요:

rsync -avc --delete /home/pi/folder /media/backup

가장 상세한 백업 검증 방법은 diff 명령을 사용하여 소스와 백업 위치 간의 모든 파일 및 디렉토리를 비교하는 것입니다. 이 검증을 수행하려면 다음을 사용하세요:

diff -r /home/pi/folder /media/backup/folder

-r 옵션은 diff가 모든 하위 디렉토리를 재귀적으로 확인하도록 지시합니다. 명령어가 아무런 출력을 생성하지 않으면 백업이 소스와 동일하다는 의미입니다. 차이가 있으면 diff가 어떤 파일이 다른지 또는 누락되었는지를 정확히 보여줍니다.

Rsync를 사용한 완전한 라즈베리 파이 백업 생성하기

일부 상황에서는 중요한 몇 개의 폴더만 백업하는 것보다 전체 라즈베리 파이 SD 카드를 백업하는 것이 더 편리하고 안전할 수 있습니다.

Rsync를 사용하여 완전한 라즈베리 파이 백업을 생성하려면, 백업 목적지가 필요합니다. 다른 SD 카드이거나 시스템 전체를 담을 수 있는 충분한 공간이 있는 외부 드라이브가 필요합니다. 백업 드라이브는 모든 파일 권한과 속성을 올바르게 보존하기 위해 ext4와 같은 리눅스 호환 파일 시스템으로 포맷되어야 합니다.

전체 라즈베리 파이 시스템을 백업하는 데 가장 까다로운 부분은 시스템의 특별한 디렉토리 및 파일을 올바르게 처리하는 것입니다. 제 경험상, 가장 쉬운 해결책은 백업할 필요가 없는 시스템 디렉토리나 복원 시 문제가 될 수 있는 디렉토리를 제외하는 것입니다. “backup-exclude.txt”라는 파일을 만들고 다음 시스템 디렉토리를 추가하세요:

  • /proc/* # 실행 중인 프로세스 정보
  • /sys/* # 커널 및 시스템 정보
  • /dev/* # 장치 파일
  • /tmp/* # 임시 파일
  • /run/* # 실행 중 데이터
  • /mnt/* # 마운트 포인트
  • /media/* # 이동식 미디어
  • /home/pi/.cache/* # 사용자 캐시 파일
  • /lost+found # 파일 시스템 복구 디렉토리

이러한 제외 설정을 한 후, 가능한 한 많은 실행 중인 애플리케이션을 닫고 다음 백업 명령어를 실행하세요:

sudo rsync -avxhP --delete --exclude-from=/home/pi/backup-exclude.txt //media/backup/rootfs/

-x 옵션은 rsync가 파일 시스템 경계를 넘도록 방지하여 시스템 디렉토리와 문제를 일으킬 수 있습니다. -h 옵션은 rsync가 더 읽기 쉬운 형식으로 파일 크기와 전송 속도를 표시하도록 합니다.

Rsync 백업 자동화하기

수동으로 생성한 전체 백업도 유용하지만, 저는 리눅스 내장 크론 스케줄러를 사용하여 자동화하는 것을 선호합니다. 이를 설정하려면, 홈 디렉토리에 “backup-pi.sh”라는 파일을 만들고 다음 내용을 추가하세요:

#!/bin/bash  
BACKUP_DRIVE="/media/backup"  
LOG_FILE="/home/pi/backup-log.txt"  
  
# 백업 드라이브가 마운트되어 있는지 확인  
if ! mountpoint -q $BACKUP_DRIVE; then  
echo "Backup drive not mounted at $BACKUP_DRIVE" >> $LOG_FILE  
exit 1  
fi  
  
# 로깅을 위한 타임스탬프 생성  
date >> $LOG_FILE  
  
# 오류 체크와 함께 백업 실행  
sudo rsync -avxhP --delete \  
--exclude-from=/home/pi/backup-exclude.txt \  
/$BACKUP_DRIVE/rootfs/ \  
>> $LOG_FILE 2>&1  
  
# 백업 완료 기록  
echo "Backup finished at $(date)" >> $LOG_FILE  
echo "-------------------" >> $LOG_FILE

스크립트를 실행 가능하게 만들고 chmod +x backup-pi.sh 명령을 사용하여 cron을 통해 일정을 설정합니다. crontab -e를 입력하고 다음 줄을 추가하여 매일 자정에 백업을 실행하도록 합니다:

00 * * * * /home/pi/backup-pi.sh

Cron Raspberry Backup

Rsync 라즈베리 파이 백업 복원하기

개별 파일이나 디렉토리를 복원하는 과정은 간단합니다. 단순히 rsync 명령의 소스와 대상을 바꾸면 됩니다. 예를 들어, 사진 라이브러리를 백업에서 복원하려면:

rsync -av /media/backup/home/david/immich-app/ /home/david/immich-app/

전체 시스템 복원을 위해서는 먼저 SD 카드에 새 라즈베리 파이 OS를 설치해야 합니다. 새 SD 카드에 라즈베리 파이 OS의 새 버전을 설치한 후, 그 카드로 라즈베리 파이를 부팅하고 초기 설정을 완료합니다. 그런 다음, 백업 드라이브를 라즈베리 파이에 연결하세요. 모든 연결이 제대로 되고 마운트되면, 다음 rsync 명령어를 사용하여 백업을 복원할 수 있습니다:

sudo rsync -avxhP /media/backup/rootfs/

복원이 완료된 후, 모든 복원된 파일이 제대로 로드되었는지 확인하기 위해 라즈베리 파이를 재부팅할 것을 권장합니다. 중요한 서비스와 설정이 예상대로 작동하는지도 확인해야 합니다.

복원 후 특정 애플리케이션이 작동하지 않는 경우, 권한 관련 오류가 있는지 /var/log/에 있는 로그 파일을 확인하세요. 필요한 경우 다음을 실행하여 홈 디렉토리 파일의 소유권을 수정해야 할 수 있습니다:

sudo chown -R $USER:$USER /home/$USER

보시다시피, rsync를 사용한 복원은 백업을 생성하는 것만큼 쉽습니다 - 명령어에서 소스와 대상 경로를 반대로 하면 됩니다.

저는 rsync의 명령줄 단순성을 선호하지만, 터미널 사용에 익숙하지 않은 분들을 위해 여러 훌륭한 GUI 대안도 있습니다. 예를 들어, Syncthing은 여러 시스템 간의 폴더를 동기화할 수 있으며, Timeshift는 깔끔한 인터페이스로 시스템 스냅샷 기능을 제공합니다. 어떤 도구를 선택하든, 중요한 것은 귀하의 소중한 데이터와 시스템 구성을 보호하기 위해 라즈베리 파이의 정기적인 백업을 유지하는 것입니다.

모든 이미지는 David Morelo의 것입니다.