MariaDB 데이터베이스 자동백업, 30일이 지난 파일을 자동으로 삭제하는 Bash 스크립트

MariaDB 데이터베이스를 자동으로 백업하고, 백업 파일 이름을 현재 시간으로 설정하며, 30일이 지난 파일을 자동으로 삭제하는 Bash 스크립트를 아래에 작성했습니다.

이 스크립트는:

  1. MariaDB 데이터베이스를 백업하고, 파일 이름을 YYYYMMDD_HHMMSS 형식으로 저장합니다.
  2. 백업 폴더 내의 30일 이상된 오래된 백업 파일을 삭제합니다.

1. MariaDB 데이터베이스 백업 및 오래된 백업 파일 삭제 스크립트

스크립트: backup_mariadb.sh

#!/bin/bash

# 변수 설정
DB_USER="your_db_user" # MariaDB 사용자명
DB_PASSWORD="your_db_password" # MariaDB 비밀번호
DB_NAME="your_db_name" # 백업할 MariaDB 데이터베이스 이름
BACKUP_DIR="/path/to/backup" # 백업 파일을 저장할 디렉터리
DATE=$(date +"%Y%m%d_%H%M%S") # 현재 날짜 및 시간 (백업 파일명에 사용)
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_backup_${DATE}.sql" # 백업 파일 경로

# 백업 디렉토리가 존재하는지 확인하고 없으면 생성
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi

# MariaDB 데이터베이스 백업
mysqldump -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" > "$BACKUP_FILE"

# 백업이 성공적으로 완료되었는지 확인
if [ $? -eq 0 ]; then
echo "백업이 성공적으로 완료되었습니다: $BACKUP_FILE"
else
echo "백업에 실패했습니다."
exit 1
fi

# 30일 이상된 백업 파일 삭제
find "$BACKUP_DIR" -name "${DB_NAME}_backup_*.sql" -type f -mtime +30 -exec rm -f {} \;

# 삭제된 파일에 대한 로그 출력
echo "30일 이상된 백업 파일이 삭제되었습니다."

2. 스크립트 설명

  • 백업 파일 이름: DATE 변수는 현재 날짜와 시간을 YYYYMMDD_HHMMSS 형식으로 저장합니다. 이를 통해 백업 파일 이름이 고유하게 생성됩니다.
    • 예: your_db_name_backup_20250228_123000.sql
  • MariaDB 백업: mysqldump 명령어를 사용하여 데이터베이스를 백업합니다. -p"$DB_PASSWORD"를 사용해 비밀번호를 입력합니다.
  • 백업 폴더 확인 및 생성: 백업 폴더가 존재하지 않으면 mkdir -p 명령어로 생성합니다.
  • 30일 이상된 파일 삭제: find 명령어를 사용하여 백업 폴더 내에서 30일 이상된 .sql 파일을 찾아 삭제합니다.
    • -mtime +30 옵션은 30일 이상된 파일을 찾습니다.

3. 자동 실행 설정 (crontab 사용)

위의 스크립트를 주기적으로 실행하도록 crontab을 설정할 수 있습니다.

  1. 터미널에서 crontab 파일을 엽니다:
crontab -e
  1. 매일 자정(0시)에 백업 스크립트를 실행하도록 설정:
0 0 * * * /path/to/backup_mariadb.sh

위 설정은 매일 자정에 backup_mariadb.sh 스크립트를 실행하여 MariaDB 데이터베이스를 백업하고, 30일이 지난 파일을 삭제합니다.

4. 권한 문제 해결

스크립트를 실행할 때 권한 문제가 발생하면, 실행 권한을 추가해야 합니다. 터미널에서 다음 명령어를 입력하여 실행 권한을 부여합니다:

chmod +x /path/to/backup_mariadb.sh

그리고, 해당 스크립트가 MariaDB에 접근할 수 있도록 MySQL/MariaDB 사용자 권한을 확인하거나 추가해야 할 수도 있습니다.

5. 백업 파일 이름 예시

백업 파일 이름은 다음과 같이 생성됩니다:

your_db_name_backup_20250228_123000.sql

이 방식으로 스크립트가 작동하면 각 백업이 고유한 이름을 가지며, 30일이 지난 파일은 자동으로 삭제됩니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다