서버 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 /backup

3.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.backup

3.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 -20

5.2 데이터베이스 백업 검증

# 백업 파일 내용 확인
head -20 /backup/db/wordpress_db_backup_*.sql

6. 복원 가이드

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. 주의사항

  1. 백업 전 서비스 중지: 백업 중 데이터 일관성을 위해 서비스 중지 고려
  2. 백업 파일 보안: wp-config.php에 DB 비밀번호가 포함되어 있으므로 보안 주의
  3. 백업 공간 확인: 충분한 디스크 공간 확보
  4. 백업 테스트: 복원 테스트를 통한 백업 검증
  5. 외부 저장: 백업 파일을 외부 저장소에 복사 권장