[파이썬] 파이썬을 활용한 리눅스 서버 백업 스크립트

리눅스 서버 운영 중에는 필요에 따라 주기적으로 서버의 데이터와 설정 파일을 백업해야 할 때가 있습니다. 이를 자동화하기 위해 파이썬을 사용하여 간단한 백업 스크립트를 작성할 수 있습니다. 이번 블로그 포스트에서는 리눅스 서버에서 파이썬을 사용하여 백업 스크립트를 작성하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치

먼저, 파이썬에서 리눅스 명령어를 실행하기 위해 subprocess 모듈을 사용합니다. 이 모듈은 기본적으로 파이썬에 포함되어 있으므로 별도의 설치가 필요하지 않습니다.

import subprocess

백업 스크립트 작성하기

리눅스에서 명령어를 실행하는 가장 쉬운 방법은 subprocess.run() 함수를 사용하는 것입니다. 이 함수를 사용하면 명령어를 실행하고 결과를 반환받을 수 있습니다.

def run_command(command):
    result = subprocess.run(command.split(), capture_output=True, text=True)
    if result.returncode != 0:
        print(f"Error executing command: {result.stderr}")
    return result.stdout

위의 코드는 주어진 명령어를 실행하고 결과를 반환하는 함수 run_command()를 정의한 것입니다. subprocess.run() 함수의 capture_output 매개변수를 True로 설정하면 실행 결과를 stdout 속성으로 받아올 수 있습니다. text 매개변수를 True로 설정하면 결과를 텍스트로 반환합니다.

이제, 백업 스크립트에서 실행할 명령어를 정의하고 위의 run_command() 함수를 사용하여 실행하는 예제를 살펴보겠습니다.

backup_dir = "/path/to/backup"

# 리눅스 명령어를 사용하여 백업 폴더 생성
run_command(f"mkdir -p {backup_dir}")

# 데이터베이스 백업
run_command("mysqldump -u username -p password database_name > /path/to/backup/database.sql")

# 웹 서버 설정 파일 백업
run_command("cp /etc/nginx/nginx.conf /path/to/backup/nginx.conf")

위의 예제에서는 backup_dir 변수에 백업 폴더 경로를 지정하고, run_command() 함수를 사용하여 리눅스 명령어를 실행하고 있습니다. mysqldump 명령어를 사용하여 데이터베이스 백업을 수행하고, cp 명령어를 사용하여 웹 서버의 설정 파일을 백업 폴더로 복사하는 예제입니다.

주기적으로 스크립트 실행하기

백업 스크립트를 실행하기 위해 운영 체제의 스케줄러를 활용할 수 있습니다. 리눅스에서는 cron이라는 스케줄러를 사용할 수 있습니다. cron을 사용하여 백업 스크립트를 주기적으로 실행하도록 설정할 수 있습니다. 실행 주기는 사용자의 요구에 따라 다르게 설정할 수 있습니다.

cron 설정 파일을 편집하기 위해 다음 명령어를 실행합니다.

crontab -e

위 명령어를 실행하면 텍스트 편집기가 열리는데, 아래와 같이 백업 스크립트가 주기적으로 실행되도록 설정합니다.

# 매일 오전 6시마다 스크립트 실행
0 6 * * * python /path/to/backup_script.py

위의 예제에서는 스크립트를 매일 오전 6시에 실행하도록 설정되어 있습니다. 사용자는 필요에 따라 실행 주기를 변경할 수 있습니다.

마무리

이번 블로그 포스트에서는 파이썬을 활용하여 리눅스 서버의 백업 스크립트를 작성하는 방법에 대해 알아보았습니다. subprocess 모듈을 사용하여 리눅스 명령어를 실행하고 결과를 받아올 수 있으며, cron 스케줄러를 사용하여 주기적으로 스크립트를 실행할 수 있습니다. 서버의 데이터와 설정 파일을 주기적으로 백업하여 시스템의 안정성과 데이터 손실 방지에 도움이 될 수 있습니다.