[파이썬] 리눅스 서버 설정 백업 및 복원 자동화

리눅스 서버의 설정은 중요하며, 장애 발생 시 빠른 복원이 필요합니다. 이를 위해 자동화된 백업 및 복원 프로세스를 구축하는 것이 좋습니다. 이번 블로그 포스트에서는 파이썬을 사용하여 리눅스 서버 설정의 백업 및 복원을 자동화하는 방법에 대해 알아보겠습니다.

백업 스크립트 작성

먼저, 백업 스크립트를 작성해야 합니다. 이 스크립트는 리눅스 서버의 설정 파일과 디렉토리를 백업하고 압축한 후 지정된 위치에 저장합니다.

import shutil
import tarfile

def backup_server_config():
    # 백업할 파일 및 디렉토리 경로 설정
    config_files = [
        '/etc/nginx/nginx.conf',
        '/etc/mysql/my.cnf',
        '/etc/apache2/sites-available'
    ]
    backup_directory = '/srv/backup/config'

    # 백업 파일 생성
    with tarfile.open(backup_directory + '/config_backup.tar.gz', 'w:gz') as tar:
        for file in config_files:
            tar.add(file)

    print("서버 설정 백업이 완료되었습니다.")

위의 코드에서는 shutiltarfile 모듈을 사용하여 파일과 디렉토리를 압축합니다. config_files 리스트에는 백업할 설정 파일과 디렉토리의 경로를 입력합니다. backup_directory 변수에는 백업 파일이 저장될 디렉토리의 경로를 입력합니다. 이후 tarfile을 사용하여 백업 파일을 생성합니다.

복원 스크립트 작성

다음으로, 복원 스크립트를 작성해야 합니다. 이 스크립트는 이전에 백업한 설정 파일과 디렉토리를 압축 해제하고 해당 위치로 복원합니다.

import shutil
import tarfile

def restore_server_config():
    # 복원할 백업 파일 경로 설정
    backup_file = '/srv/backup/config/config_backup.tar.gz'
    restore_directory = '/'

    # 백업 파일 압축 해제
    with tarfile.open(backup_file, 'r:gz') as tar:
        tar.extractall(restore_directory)

    print("서버 설정 복원이 완료되었습니다.")

위의 코드에서는 shutiltarfile 모듈을 사용하여 백업 파일을 압축 해제하고 해당 디렉토리로 복원합니다. backup_file 변수에는 복원할 백업 파일의 경로를 입력합니다. restore_directory 변수에는 복원할 위치의 디렉토리 경로를 입력합니다.

자동화 스크립트 작성

이제, 백업 및 복원 스크립트를 자동으로 실행하는 스크립트를 작성해야 합니다. 이 스크립트는 일정한 주기로 백업을 수행하고 필요에 따라 복원을 수행합니다.

import schedule
import time

# 백업 스케줄링 함수
def backup_scheduler():
    backup_server_config()
    
# 복원 스케줄링 함수
def restore_scheduler():
    restore_server_config()

# 1시간마다 백업 수행
schedule.every().hour.do(backup_scheduler)

# 매주 금요일 오후 6시에 복원 수행
schedule.every().friday.at("18:00").do(restore_scheduler)

while True:
    schedule.run_pending()
    time.sleep(1)

위의 코드에서는 schedule 모듈을 사용하여 백업과 복원 함수를 일정한 주기로 실행합니다. backup_scheduler 함수는 1시간마다 backup_server_config 함수를 실행하며, restore_scheduler 함수는 매주 금요일 오후 6시에 restore_server_config 함수를 실행합니다.

마무리

위의 코드를 사용하여 파이썬을 활용해 리눅스 서버 설정의 백업 및 복원을 자동화할 수 있습니다. 이를테면, 서버 장애가 발생하거나 설정을 변경해야 할 때 원래의 설정을 빠르게 복원할 수 있습니다. 이러한 자동화 작업을 통해 시간과 노력을 절약하고 안정적으로 서버를 유지할 수 있습니다.