서버 OS 전환 백업 계획
작성일: 2025년 9월 3일
백업 대상: RHEL 8.9 → Ubuntu 22.04 LTS 전환
1. 현재 서버 구성 분석
1.1 웹 서버 구성
- 웹 서버: Apache HTTP Server (httpd)
- PHP: PHP-FPM (FastCGI Process Manager)
- 데이터베이스: MySQL 8.0
- 웹 애플리케이션: WordPress
- 도메인: ccle.gist.ac.kr (주석 처리됨)
1.2 WordPress 설정
- 데이터베이스명: wpdatabase
- 사용자: wpuser
- 호스트: localhost
- 테이블 접두사: wp_
2. 백업해야 할 데이터 목록
2.1 웹 애플리케이션 데이터
/var/www/html/ # WordPress 전체 디렉토리
├── wp-config.php # WordPress 설정 파일 (DB 정보 포함)
├── wp-content/ # 테마, 플러그인, 업로드 파일
├── wp-admin/ # WordPress 관리자 파일
├── wp-includes/ # WordPress 핵심 파일
├── .htaccess # Apache 설정 파일
└── 기타 WordPress 파일들
2.2 데이터베이스 데이터
/var/lib/mysql/ # MySQL 데이터 디렉토리
├── wpdatabase/ # WordPress 데이터베이스
├── mysql/ # MySQL 시스템 데이터베이스
└── 기타 데이터베이스들
2.3 웹 서버 설정
/etc/httpd/ # Apache 설정 디렉토리
├── conf/ # 메인 설정 파일
├── conf.d/ # 추가 설정 파일들
└── conf.modules.d/ # 모듈 설정
/etc/php-fpm.d/ # PHP-FPM 설정
/etc/php.ini # PHP 메인 설정
2.4 MySQL 설정
/etc/my.cnf # MySQL 메인 설정
/etc/my.cnf.d/ # MySQL 추가 설정
/etc/mysql/ # MySQL 설정 디렉토리
2.5 로그 파일
/var/log/httpd/ # Apache 로그
/var/log/mysqld.log # MySQL 로그
/var/log/php-fpm/ # PHP-FPM 로그
2.6 시스템 설정
/etc/hosts # 호스트 파일
/etc/resolv.conf # DNS 설정
/etc/fstab # 파일시스템 마운트 설정
/home/ # 사용자 홈 디렉토리
3. 백업 스크립트
3.1 백업 디렉토리 생성
sudo mkdir -p /backup/{web,db,config,logs,home}
sudo chmod 755 /backup3.2 웹 애플리케이션 백업
# WordPress 전체 백업
sudo tar -czf /backup/web/wordpress_backup_$(date +%Y%m%d_%H%M%S).tar.gz /var/www/html/
# wp-config.php 별도 백업 (중요 설정 파일)
sudo cp /var/www/html/wp-config.php /backup/web/wp-config.php.backup3.3 데이터베이스 백업
# MySQL 전체 데이터베이스 백업
sudo mysqldump -u root -p --all-databases > /backup/db/mysql_full_backup_$(date +%Y%m%d_%H%M%S).sql
# WordPress 데이터베이스만 백업
sudo mysqldump -u wpuser -p wpdatabase > /backup/db/wordpress_db_backup_$(date +%Y%m%d_%H%M%S).sql
# MySQL 데이터 디렉토리 백업
sudo tar -czf /backup/db/mysql_data_backup_$(date +%Y%m%d_%H%M%S).tar.gz /var/lib/mysql/3.4 웹 서버 설정 백업
# Apache 설정 백업
sudo tar -czf /backup/config/apache_config_backup_$(date +%Y%m%d_%H%M%S).tar.gz /etc/httpd/
# PHP 설정 백업
sudo tar -czf /backup/config/php_config_backup_$(date +%Y%m%d_%H%M%S).tar.gz /etc/php* /etc/php-fpm*
# MySQL 설정 백업
sudo tar -czf /backup/config/mysql_config_backup_$(date +%Y%m%d_%H%M%S).tar.gz /etc/my.cnf* /etc/mysql/3.5 로그 파일 백업
# 웹 서버 로그 백업
sudo tar -czf /backup/logs/web_logs_backup_$(date +%Y%m%d_%H%M%S).tar.gz /var/log/httpd/ /var/log/php-fpm/
# MySQL 로그 백업
sudo tar -czf /backup/logs/mysql_logs_backup_$(date +%Y%m%d_%H%M%S).tar.gz /var/log/mysqld*3.6 시스템 설정 백업
# 중요 시스템 설정 백업
sudo tar -czf /backup/config/system_config_backup_$(date +%Y%m%d_%H%M%S).tar.gz /etc/hosts /etc/resolv.conf /etc/fstab
# 사용자 홈 디렉토리 백업
sudo tar -czf /backup/home/home_backup_$(date +%Y%m%d_%H%M%S).tar.gz /home/4. 전체 백업 스크립트
4.1 백업 스크립트 생성
#!/bin/bash
# server_backup.sh
BACKUP_DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup"
WEB_DIR="$BACKUP_DIR/web"
DB_DIR="$BACKUP_DIR/db"
CONFIG_DIR="$BACKUP_DIR/config"
LOGS_DIR="$BACKUP_DIR/logs"
HOME_DIR="$BACKUP_DIR/home"
# 백업 디렉토리 생성
sudo mkdir -p {$WEB_DIR,$DB_DIR,$CONFIG_DIR,$LOGS_DIR,$HOME_DIR}
echo "=== 서버 백업 시작: $BACKUP_DATE ==="
# 1. 웹 애플리케이션 백업
echo "1. WordPress 백업 중..."
sudo tar -czf $WEB_DIR/wordpress_backup_$BACKUP_DATE.tar.gz /var/www/html/
sudo cp /var/www/html/wp-config.php $WEB_DIR/wp-config.php.backup
# 2. 데이터베이스 백업
echo "2. 데이터베이스 백업 중..."
sudo mysqldump -u root -p --all-databases > $DB_DIR/mysql_full_backup_$BACKUP_DATE.sql
sudo mysqldump -u wpuser -p wpdatabase > $DB_DIR/wordpress_db_backup_$BACKUP_DATE.sql
sudo tar -czf $DB_DIR/mysql_data_backup_$BACKUP_DATE.tar.gz /var/lib/mysql/
# 3. 웹 서버 설정 백업
echo "3. 웹 서버 설정 백업 중..."
sudo tar -czf $CONFIG_DIR/apache_config_backup_$BACKUP_DATE.tar.gz /etc/httpd/
sudo tar -czf $CONFIG_DIR/php_config_backup_$BACKUP_DATE.tar.gz /etc/php* /etc/php-fpm*
sudo tar -czf $CONFIG_DIR/mysql_config_backup_$BACKUP_DATE.tar.gz /etc/my.cnf* /etc/mysql/
# 4. 로그 파일 백업
echo "4. 로그 파일 백업 중..."
sudo tar -czf $LOGS_DIR/web_logs_backup_$BACKUP_DATE.tar.gz /var/log/httpd/ /var/log/php-fpm/
sudo tar -czf $LOGS_DIR/mysql_logs_backup_$BACKUP_DATE.tar.gz /var/log/mysqld*
# 5. 시스템 설정 백업
echo "5. 시스템 설정 백업 중..."
sudo tar -czf $CONFIG_DIR/system_config_backup_$BACKUP_DATE.tar.gz /etc/hosts /etc/resolv.conf /etc/fstab
sudo tar -czf $HOME_DIR/home_backup_$BACKUP_DATE.tar.gz /home/
# 6. 전체 백업을 하나의 파일로 압축
echo "6. 전체 백업 압축 중..."
cd $BACKUP_DIR
sudo tar -czf server_full_backup_$BACKUP_DATE.tar.gz web/ db/ config/ logs/ home/
echo "=== 백업 완료 ==="
echo "백업 위치: $BACKUP_DIR/server_full_backup_$BACKUP_DATE.tar.gz"5. 백업 검증
5.1 백업 파일 확인
# 백업 파일 크기 확인
ls -lh /backup/server_full_backup_*.tar.gz
# 백업 파일 무결성 확인
tar -tzf /backup/server_full_backup_*.tar.gz | head -205.2 데이터베이스 백업 검증
# 백업 파일 내용 확인
head -20 /backup/db/wordpress_db_backup_*.sql6. 복원 가이드
6.1 Ubuntu 22.04 LTS에서 복원
# 1. LAMP 스택 설치
sudo apt update
sudo apt install apache2 mysql-server php php-mysql php-fpm
# 2. 백업 파일 압축 해제
sudo tar -xzf server_full_backup_*.tar.gz -C /tmp/
# 3. WordPress 복원
sudo tar -xzf /tmp/web/wordpress_backup_*.tar.gz -C /var/www/
# 4. 데이터베이스 복원
sudo mysql -u root -p < /tmp/db/wordpress_db_backup_*.sql
# 5. 설정 파일 복원 (필요시)
sudo tar -xzf /tmp/config/apache_config_backup_*.tar.gz -C /etc/
sudo tar -xzf /tmp/config/php_config_backup_*.tar.gz -C /etc/7. 주의사항
- 백업 전 서비스 중지: 백업 중 데이터 일관성을 위해 서비스 중지 고려
- 백업 파일 보안: wp-config.php에 DB 비밀번호가 포함되어 있으므로 보안 주의
- 백업 공간 확인: 충분한 디스크 공간 확보
- 백업 테스트: 복원 테스트를 통한 백업 검증
- 외부 저장: 백업 파일을 외부 저장소에 복사 권장