백업 설정 · 3 min read · Dec 10, 2025

Debian에서 Rsnapshot 설정, 스냅샷 아카이빙 및 MySQL 데이터베이스 백업

Debian에서 Rsnapshot 설정, 스냅샷 아카이빙 및 MySQL 데이터베이스 백업

By Nedim Hadzimahmutovic < [email protected] >

이 방법서는 Rsnapshot을 설치하고 설정하는 방법, 스냅샷 아카이빙을 활성화하는 방법 및 Debian에서 MySQL 데이터베이스를 백업하는 방법을 보여줍니다.

apt-get 유틸리티를 사용하여 프로그램을 설치합니다:

apt-get install rsnapshot

구성 파일을 편집합니다:

nano /etc/rsnapshot.conf

백업을 저장할 경로로 snapshot_root를 설정합니다:

snapshot_root   /var/cache/rsnapshot/

백업할 디렉토리/파일 목록을 설정합니다.

backup  /etc/           localhost/

백업 간격

구성 파일의 이 섹션은 간격에 대한 레이블과 각 수준에서 유지할 스냅샷 수를 정의하는 데만 사용됩니다. 스냅샷이 얼마나 자주 생성되는지는 cron을 통해 구성되고 실행됩니다. 키워드 interval은 알파벳과 숫자로 구성된 레이블 뒤에 숫자가 오며, 이는 유지할 간격(스냅샷)의 수를 나타냅니다. 간격 레이블은 고유해야 하며 오름차순으로 나열되어야 하며, 가장 작은 간격이 먼저 나와야 합니다.

다음 예제에서는 6개의 “hourly” 스냅샷 후 가장 오래된 “hourly”가 삭제됩니다. 가장 위의 항목(이 경우 “hourly”)은 소스에서 복사되며, 나머지 항목은 단순히 한 수준 위의 최신 스냅샷에 링크됩니다.

다시 말해, 하루에 6개의 백업(4시간 간격), 7개의 일일 백업(1주), 4개의 주간 백업(1개월)을 유지하려면 다음을 지정합니다:

interval        hourly  6
interval        daily   7
interval        weekly  4

간격 레이블 “hourly”, “daily”, “weekly”는 필요에 따라 “daysago”, “weeksago” 및 “monthsago”로 변경할 수 있습니다.

rsnapshot hourly가 수동으로 또는 cron에 의해 실행될 때마다 새로운 스냅샷을 생성하고, 이전 스냅샷을 회전시키며, 가장 최근의 6개( hourly.0 - hourly.5)를 유지합니다.

백업 포인트

구성 파일 내 백업 포인트의 예:

backup      /etc/      localhost/ 

백업 포인트는 백업이라는 단어로 시작하며, /etc/ 뒤에는 백업할 디렉토리의 전체 경로가 오고 localhost는 snapshot_root 내의 디렉토리입니다. localhost를 서버의 완전한 도메인 이름과 같은 서버와 연관된 것으로 변경할 수 있습니다.

로컬 파일 시스템의 전체 경로 외에도 ssh를 통해 rsync를 사용하여 원격 시스템을 백업할 수 있습니다. ssh가 설치되어 있고 활성화되어 있다면(cmd_ssh 매개변수 사용), 다음과 같은 경로를 지정할 수 있습니다:

backup      [email protected]:/etc/     example.com/

이 기능이 제대로 작동하려면 example.com의 root 사용자에 대해 키 기반 로그인이 활성화되어 있어야 하며, 암호 구문이 없어야 합니다./

백업 스크립트

Debian의 utils 디렉토리에서 많은 예제를 찾을 수 있으며, 위치는 /usr/share/doc/rsnapshot/examples/utils/입니다.

백업 스크립트는 각 가장 낮은 간격으로 실행됩니다.

Cron을 통한 백업 실행

cron 파일은 다음 위치에 있습니다:

/etc/cron.d/rsnapshot

기본 내용:

# 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에 4시간마다 cron-apt를 실행하도록 지시하며, 이는 rsnapshot.conf의 시간 간격 설정과 일치합니다.

구성 테스트:

구성 파일을 변경할 때마다 구성 테스트를 수행합니다:

rsnapshot configtest

다음 규칙을 유의하시기 바랍니다:

  • 구성 파일은 요소 간에 탭이 필요하며, 공백은 스크립트의 인수를 나타냅니다.
  • 디렉토리는 후행 슬래시가 필요합니다. 예:

올바른: /home/

잘못된: /home

스냅샷 아카이빙

cp /usr/share/doc/rsnapshot/examples/utils/rsnaptar /usr/local/bin/

백업 스크립트가 root 소유이며 다른 사용자가 쓸 수 없도록 해야 합니다.

chown root.root /usr/local/bin/rsnaptar  
chmod o-w /usr/local/bin/rsnaptar

스크립트를 편집하고 디렉토리 경로를 설정합니다:

nano /usr/local/bin/rsnaptar

TAR_DIR을 스냅샷이 아카이빙될 경로로 설정하고, SNAPSHOT_DIR을 일일 스냅샷이 위치한 경로로 설정합니다:

TAR_DIR="/home/user/dvd_backup"
SNAPSHOT_DIR="/var/cache/rsnapshot/daily.0"

일일 스냅샷이 생성되려면 시간 주기가 완료되어야 합니다.

이 스크립트는 파일의 gpg 암호화를 지원하며, 이를 비활성화하려면 /usr/local/bin/rsnaptar의 다음 줄에 주석을 추가합니다:

GPG="/usr/bin/gpg"

Cron을 통한 실행 예약

nano /etc/cron.daily/rsnaptar

추가:

#!/usr/bin/env bash
/usr/local/bin/rsnaptar [email protected]

노트:

    • 이 방법서는 파일을 암호화하기 위해 GPG 옵션을 사용하지 않으며, 이것이 필요하다면 더 나은 보안을 위해 파일 암호화를 포함하도록 방법서를 업데이트할 수 있습니다.
    • 기본적으로 스크립트는 독립적으로 실행되지만, rsnapshot 자체를 통해 backup_script로 실행되도록 수정할 수 있습니다.

Rsnapshot: MySQL 데이터베이스 백업

설치되지 않은 경우 mysql-client를 설치합니다. 이는 mysqldump 유틸리티를 제공합니다:

# apt-get install mysql-client
# cp /usr/share/doc/rsnapshot/examples/utils/backup_mysql.sh /usr/local/bin/

백업 스크립트가 root 소유이며 다른 사용자가 쓸 수 없도록 해야 합니다.

chown root.root /usr/local/bin/backup_mysql.sh  
chmod o-w /usr/local/bin/backup_mysql.sh

이 스크립트는 모든 데이터베이스를 단일 파일로 백업하도록 설계되었습니다.

스크립트를 편집합니다:

nano /usr/local/bin/backup_mysql.sh

다음 줄을 교체합니다:

/usr/bin/mysqldump --all-databases > mysqldump_all_databases.sql

다음으로:

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases > mysqldump_all_databases.sql

단일 데이터베이스를 덤프해야 하는 경우 아래 줄을 사용합니다:

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf DATABASE > DATABASE.SQL

Rsnapshot에 스크립트 추가

rsnapshot 구성을 편집합니다:

nano /etc/rsnapshot.conf

백업 포인트 / 스크립트 아래에 다음을 추가합니다:

backup_script       /usr/local/bin/backup_mysql.sh  localhost/mysqldump/

구성을 테스트합니다:

rsnapshot configtest
Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.