MariaDB 데이터베이스를 자동으로 백업하고, 백업 파일 이름을 현재 시간으로 설정하며, 30일이 지난 파일을 자동으로 삭제하는 Bash 스크립트를 아래에 작성했습니다.
이 스크립트는:
- MariaDB 데이터베이스를 백업하고, 파일 이름을
YYYYMMDD_HHMMSS
형식으로 저장합니다. - 백업 폴더 내의 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
을 설정할 수 있습니다.
- 터미널에서 crontab 파일을 엽니다:
crontab -e
- 매일 자정(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일이 지난 파일은 자동으로 삭제됩니다.