웹사이트 검색

Rsnapshot(Rsync 기반) - Linux용 로컬/원격 파일 시스템 백업 유틸리티


rsnapshot은 오픈 소스 로컬/원격 파일 시스템 백업 유틸리티로 Perl 언어로 작성되었으며 < Strong>Rsync 및 SSH 프로그램을 사용하여 Linux/Unix 파일 시스템의 예약된 증분 백업을 생성하고 하나의 전체 백업과 차이점을 추가하고 해당 백업을 로컬 드라이브에서 다른 하드 드라이브, 외부 USB 스틱에 보관합니다. , NFS 마운트 드라이브 또는 단순히 SSH를 통해 네트워크를 통해 다른 시스템으로 연결됩니다.

이 문서에서는 rsnapshot을 설치, 설정 및 사용하여 시간별, 일별, 주별증분 생성 방법을 설명합니다. Strong>월간 로컬 백업 및 원격 백업. 이 문서의 모든 단계를 수행하려면 루트 사용자여야 합니다.

1단계: Linux에 Rsnapshot 백업 설치

YumAPT를 사용하는 rsnapshot 설치는 Red Hat을 사용하는 경우 약간 다를 수 있습니다. Debian 기반 배포판.

RHEL/CentOS에서

먼저 EPEL이라는 타사 저장소를 설치하고 활성화해야 합니다. RHEL/CentOS 시스템에 설치하고 활성화하려면 아래 링크를 따르세요. Fedora 사용자에게는 특별한 저장소 구성이 필요하지 않습니다.

  1. RHEL/CentOS 6/5/4에서 EPEL 리포지토리 설치 및 활성화

설정이 완료되면 표시된 대로 명령줄에서 rsnapshot을 설치합니다.

yum install rsnapshot
데비안/우분투/리눅스 민트에서

기본적으로 rsnapshotUbuntu의 저장소에 포함되어 있으므로 그림과 같이 apt-get 명령을 사용하여 설치할 수 있습니다.

apt-get install rsnapshot

2단계: SSH 비밀번호 없는 로그인 설정

원격 Linux 서버를 백업하려면 rsnapshot 백업 서버가 비밀번호 없이 SSH를 통해 연결할 수 있습니다. 이를 수행하려면 rsnapshot 서버에서 인증할 SSH 공개 및 개인 키를 만들어야 합니다. 스냅샷 백업 서버에서 공개 및 개인 키를 생성하려면 아래 링크를 따르세요.

  1. SSH Keygen을 사용하여 SSH 비밀번호 없는 로그인 만들기

3단계: R스냅샷 구성

이제 rsnapshot 구성 파일에 일부 매개변수를 편집하고 추가해야 합니다. vi 또는 nano 편집기를 사용하여 rsnapshot.conf 파일을 엽니다.

vi /etc/rsnapshot.conf

다음으로 모든 백업을 저장할 백업 디렉터리를 만듭니다. 제 경우에는 백업 디렉터리 위치가 "/data/backup/ "입니다. 백업 위치를 설정하려면 다음 매개변수를 검색하고 편집하세요.

snapshot_root			 /data/backup/

또한 SSH를 통해 원격 백업을 수행할 수 있도록 하려면 "cmd_ssh" 줄의 주석 처리를 제거하세요. 해당 행의 주석 처리를 제거하려면 rsnapshot이 데이터를 백업 서버로 안전하게 전송할 수 있도록 다음 행 앞의 "#"을 제거하십시오.

cmd_ssh			/usr/bin/ssh

다음으로, 얼마나 자주 스냅샷을 찍고 싶은지 rsnapshot이 알지 못했기 때문에 얼마나 많은 오래된 백업을 보관하고 싶은지 결정해야 합니다. 저장할 데이터의 양, 보관할 간격을 추가하고 각 데이터의 개수를 지정해야 합니다.

기본 설정이면 충분하지만, 장기간 백업을 할 수 있도록 "월간" 간격을 활성화해 주시길 바랍니다. 아래 설정과 비슷하게 보이도록 이 섹션을 편집하세요.

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

편집해야 할 또 하나의 사항은 "ssh_args" 변수입니다. 기본 SSH 포트(22)를 다른 것으로 변경한 경우 원격 백업 서버의 해당 포트 번호를 지정해야 합니다.

ssh_args		-p 7851

마지막으로 백업하려는 로컬 및 원격 백업 디렉터리를 추가합니다.

로컬 디렉터리 백업

디렉터리를 동일한 머신에 로컬로 백업하기로 결정한 경우 백업 항목은 다음과 같습니다. 예를 들어, /tecmint/etc 디렉토리를 백업하고 있습니다.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
원격 디렉터리 백업

원격 서버 디렉터리를 백업하려면 서버의 위치와 백업하려는 디렉터리를 RSnapshot에 알려야 합니다. 여기에서는 rsnapshot 서버의 "/data/backup" 디렉터리 아래에 있는 원격 서버 "/home" 디렉터리를 백업하고 있습니다.

backup		 [email :/home/ 		/data/backup/

또한 읽어보세요:

  1. Rsync(원격 동기화) 도구를 사용하여 디렉터리를 백업/동기화하는 방법
  2. SCP 명령을 사용하여 파일/폴더를 전송하는 방법
파일 및 디렉터리 제외

여기서는 모든 항목을 제외하고 백업할 항목만 구체적으로 정의하겠습니다. 이렇게 하려면 제외 파일을 만들어야 합니다.

vi /data/backup/tecmint.exclude

먼저 백업하려는 디렉터리 목록을 가져오고 추가( – * )하여 다른 모든 디렉터리를 제외합니다. 이렇게 하면 파일에 나열된 내용만 백업됩니다. 내 제외 파일은 아래와 유사합니다.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

제외 파일 옵션을 사용하는 것은 rsync 재귀 사용으로 인해 매우 까다로울 수 있습니다. 따라서 위의 예는 여러분이 보고 있는 것과 다를 수도 있습니다. 다음으로 rsnapshot.conf 파일에 제외 파일을 추가합니다.

exclude_file    /data/backup/tecmint.exclude

드디어 초기 구성이 거의 완료되었습니다. 계속 진행하기 전에 "/etc/rsnapshot.conf" 구성 파일을 저장하십시오. 설명할 옵션이 많지만 여기에 샘플 구성 파일이 있습니다.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

위의 모든 옵션과 인수 설명은 다음과 같습니다.

  1. config_version 1.2=구성 파일 버전
  2. snapshot_root=스냅샷을 저장할 백업 대상
  3. cmd_cp=명령 복사 경로
  4. cmd_rm=명령을 제거할 경로
  5. cmd_rsync=rsync 경로
  6. cmd_ssh=SSH 경로
  7. cmd_logger=syslog에 대한 쉘 명령 인터페이스 경로
  8. cmd_du=디스크 사용 명령 경로
  9. 시간별 간격=보관할 시간별 백업 수입니다.
  10. interval daily=보관할 일일 백업 수입니다.
  11. 간격 주간=보관할 주간 백업 횟수입니다.
  12. 월별 간격=보관할 월간 백업 수입니다.
  13. ssh_args=다른 포트(-p)와 같은 선택적 SSH 인수
  14. verbose=설명이 필요함
  15. 로그 수준=설명이 필요함
  16. 로그파일=로그파일 경로
  17. exclude_file=제외 파일 경로(자세히 설명하겠습니다)
  18. rsync_long_args=rsync에 전달할 긴 인수
  19. 잠금 파일=설명이 필요함
  20. 백업=백업할 항목의 전체 경로와 배치 상대 경로가 뒤따릅니다.

4단계: Rsnapshot 구성 확인

모든 구성을 마쳤으면 이제 모든 것이 예상대로 작동하는지 확인할 차례입니다. 다음 명령을 실행하여 구성의 구문이 올바른지 확인하세요.

rsnapshot configtest

Syntax OK

모든 것이 올바르게 구성되면 "Syntax OK " 메시지가 표시됩니다. 오류 메시지가 나타나면 rsnapshot을 실행하기 전에 해당 오류를 수정해야 한다는 의미입니다.

다음으로 스냅샷 중 하나에 대해 테스트를 실행하여 올바른 결과가 생성되는지 확인합니다. -t(테스트) 인수를 사용하여 테스트 실행을 수행하려면 "시간별" 매개변수를 사용합니다. 아래 명령은 실제로 수행하지 않고 수행할 작업에 대한 자세한 목록을 표시합니다.

rsnapshot -t hourly
샘플 출력
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

참고: 위 명령은 rsnapshot에 "시간별" 백업을 생성하도록 지시합니다. 실제로 실행할 때 수행할 명령을 실제로 인쇄합니다.

5단계: Rsnapshot을 수동으로 실행

결과를 확인한 후 "-t" 옵션을 제거하여 실제로 명령을 실행할 수 있습니다.

rsnapshot hourly

위 명령은 rsnapshot.conf 파일에 추가한 모든 구성으로 백업 스크립트를 실행하고 "backup" 디렉터리를 생성한 다음 그 아래에 디렉터리 구조를 생성합니다. 파일을 정리하는 것입니다. 위 명령을 실행한 후 백업 디렉터리로 이동하여 그림과 같이 ls -l 명령을 사용하여 디렉터리 구조를 나열하여 결과를 확인할 수 있습니다.

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

6단계: 프로세스 자동화

프로세스를 자동화하려면 Cron에서 특정 간격으로 rsnapshot이 실행되도록 예약해야 합니다. 기본적으로 rsnapshot은 "/etc/cron.d/rsnapshot" 아래에 cron 파일과 함께 제공됩니다. 존재하지 않는 경우 하나를 만들고 다음 줄을 추가하십시오.

기본적으로 규칙은 주석 처리되어 있으므로 이 값을 활성화하려면 일정 섹션 앞의 "#"을 제거해야 합니다.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

위의 cron 규칙이 수행하는 작업을 정확하게 설명하겠습니다.

  1. 4시간마다 실행되며 /backup 디렉토리 아래에 시간별 디렉토리를 생성합니다.
  2. 매일 오전 3시 30분에 실행되고 /backup 디렉터리 아래에 daily 디렉터리를 만듭니다.
  3. 매주 월요일 오전 3시주간을 실행하고 /backup주간 디렉터리를 만듭니다. 강한> 디렉토리.
  4. 월별마다 오전 2시 30분에 실행하고 /backup 디렉터리 아래에 월별 디렉터리를 만듭니다.

크론 규칙의 작동 방식을 더 잘 이해하려면 설명하는 기사를 읽어 보시기 바랍니다.

  1. 11 크론 스케줄링 예

7단계: R스냅샷 보고서

RSnapshot은 데이터 백업 중에 발생한 모든 세부정보가 포함된 이메일 알림을 보내는 멋진 작은 보고 Perl 스크립트를 제공합니다. 이 스크립트를 설정하려면 "/usr/local/bin" 아래에 스크립트를 복사하여 실행 가능하게 만들어야 합니다.

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

다음으로, “rsnapshot.conf” 파일의 “–stats” 매개변수를 rsync의 긴 인수 섹션에 추가하세요.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

이제 이전에 추가한 crontab 규칙을 편집하고 rsnapreport.pl 스크립트를 호출하여 보고서를 지정된 이메일 주소로 전달합니다.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

위 항목을 올바르게 추가하면 아래와 유사한 이메일 주소로 보고서가 전송됩니다.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

참조 링크

  1. RSnapshot 홈페이지

지금은 그게 다입니다. 설치 중에 문제가 발생하면 의견을 남겨주세요. 그때까지 오픈 소스 세계에 대한 더 흥미로운 기사를 보려면 TecMint를 계속 지켜봐 주시기 바랍니다.