[파이썬] SQLite 데이터베이스 백업과 복구

SQLite는 경량 데이터베이스로 알려져 있으며, Python에서 많이 사용됩니다. 하지만 때때로 데이터베이스에 저장된 중요한 정보들을 잃는 경우가 발생할 수 있습니다. 이러한 상황에서 백업과 복구 기능은 아주 유용합니다. 이 글에서는 SQLite 데이터베이스를 백업하고 복구하는 방법을 알아보겠습니다.

데이터베이스 백업하기

SQLite 데이터베이스를 백업하는 가장 간단한 방법은 단순히 데이터베이스 파일을 다른 위치에 복사하는 것입니다. 이렇게 하면 원본 데이터베이스 파일이 손상되어도 복사본을 사용하여 데이터를 복구할 수 있습니다.

다음은 Python에서 shutil 라이브러리를 사용하여 데이터베이스 파일을 백업하는 예제입니다.

import shutil

def backup_database(db_path, backup_path):
    shutil.copy(db_path, backup_path)
    print("데이터베이스 백업이 완료되었습니다.")

# 예제 사용법
db_path = "original_database.db"
backup_path = "backup/original_database_backup.db"
backup_database(db_path, backup_path)

위의 예제에서 shutil.copy() 함수를 사용하여 데이터베이스 파일을 백업 경로로 복사합니다. 백업된 데이터베이스 파일은 backup/original_database_backup.db 경로에 생성됩니다.

데이터베이스 복구하기

데이터베이스를 복구하는 경우, 단순히 이전에 백업한 데이터베이스 파일을 원래 위치로 복사하면 됩니다.

다음은 데이터베이스 파일을 복구하는 예제입니다.

def restore_database(backup_path, db_path):
    shutil.copy(backup_path, db_path)
    print("데이터베이스 복구가 완료되었습니다.")

# 예제 사용법
backup_path = "backup/original_database_backup.db"
db_path = "original_database.db"
restore_database(backup_path, db_path)

위의 예제에서는 백업 파일인 backup/original_database_backup.db를 원래 데이터베이스 파일인 original_database.db로 복사합니다.

정기적인 백업 자동화

데이터베이스의 중요성에 따라, 데이터베이스 백업을 자동화하는 것이 좋습니다. Python의 schedule 라이브러리를 사용하면 정기적으로 백업 작업을 실행할 수 있습니다.

다음은 schedule 라이브러리를 사용하여 매일 밤 11시에 데이터베이스를 자동으로 백업하는 예제입니다.

import schedule
import time

def backup_database(db_path, backup_path):
    shutil.copy(db_path, backup_path)
    print("데이터베이스 백업이 완료되었습니다.")

def run_backup_job():
    db_path = "original_database.db"
    backup_path = f"backup/original_database_backup_{time.strftime('%Y%m%d_%H%M%S')}.db"
    backup_database(db_path, backup_path)

# 매일 밤 11시에 백업 작업 실행
schedule.every().day.at("23:00").do(run_backup_job)

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

위의 예제에서는 run_backup_job() 함수를 정의하여 백업 작업을 실행합니다. schedule.every().day.at("23:00").do(run_backup_job)을 사용하여 매일 밤 11시에 run_backup_job() 함수를 실행합니다. 데이터베이스 백업 파일은 백업 경로에 날짜와 시간을 포함한 파일명으로 생성됩니다.

그러나 이는 예제일 뿐이며, 실제 환경에서는 백업 파일을 안전한 위치에 저장하고 주기적으로 삭제하는 것이 좋습니다.

마치며

SQLite 데이터베이스를 백업하고 복구하는 방법을 살펴보았습니다. 중요한 데이터를 보호하기 위해 데이터베이스를 정기적으로 백업하는 것은 매우 중요합니다. 위의 예제를 참조하여 데이터베이스 백업 및 복구 기능을 자신의 프로젝트에 적용해 보세요.