Skip to content
toylee blog
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

  • 홈
  • 컴퓨터 활용
  • 프로그래밍
    • 파이썬
    • 자바(Java)
    • Flutter
    • HTML
    • Linux
    • 워드프레스
  • 맥북
  • IT 일반
  • 블로그 소개
  • 문의하기
toylee blog

컴퓨터·IT 문제 해결과 최신 기술 정보

SQLite 데이터 백업과 복구: 안전한 명령과 검증 절차

toylee, 2026년 02월 18일2026년 08월 27일

SQLite는 데이터베이스가 파일 하나처럼 보이지만, 실행 중인 파일을 무조건 복사하면 일관된 백업이 된다고 보장할 수 없습니다. 특히 WAL 모드에서는 -wal, -shm 파일이 함께 사용될 수 있습니다. 서비스 중인 DB는 SQLite가 제공하는 온라인 백업 기능을 사용하고, 백업 성공과 복구 가능성을 별도로 검증해야 합니다.

[목차]

  • 상황별 백업 방법
  • sqlite3 CLI로 온라인 백업
  • 자동화 스크립트 예제
  • VACUUM INTO를 사용하는 경우
  • 복구는 원본을 덮어쓰기 전에 시험합니다
  • 공식 참고자료
  • 관련 글

상황별 백업 방법

상황 권장 방법
앱이 DB를 사용 중 .backup 또는 Online Backup API
압축된 새 복사본 필요 VACUUM INTO
앱을 완전히 종료함 DB와 관련 파일 상태를 확인한 뒤 파일 복사 가능
손상 DB에서 최대한 추출 .recover 검토, 원본 보존 필수

sqlite3 CLI로 온라인 백업

mkdir -p backups
chmod 700 backups
sqlite3 app.db ".backup 'backups/app-20260827.db'"
sqlite3 backups/app-20260827.db "PRAGMA integrity_check;"

integrity_check 결과가 ok인지 확인합니다. 백업 파일의 존재와 크기만 확인해서는 충분하지 않습니다.

자동화 스크립트 예제

#!/usr/bin/env bash
set -Eeuo pipefail
umask 077

db="/srv/app/app.db"
backup_dir="/srv/backups/sqlite"
stamp="$(date -u +%Y%m%dT%H%M%SZ)"
tmp="$backup_dir/.app-$stamp.tmp"
dest="$backup_dir/app-$stamp.db"

mkdir -p "$backup_dir"
trap 'rm -f "$tmp"' EXIT

sqlite3 "$db" ".backup '$tmp'"
test "$(sqlite3 "$tmp" 'PRAGMA integrity_check;')" = "ok"
mv "$tmp" "$dest"
trap - EXIT

# 30일보다 오래된 백업만 삭제
find "$backup_dir" -type f -name 'app-*.db' -mtime +30 -delete
printf 'backup complete: %s\n' "$dest"

스크립트를 실제 서비스에 적용하기 전에 경로에 작은따옴표 같은 특수문자가 없는지 확인하고, 백업 저장소의 남은 용량과 실행 로그를 모니터링하세요.

VACUUM INTO를 사용하는 경우

sqlite3 app.db "VACUUM INTO 'backups/app-compact.db';"

VACUUM INTO는 사용하지 않는 공간을 제거한 새 파일을 만듭니다. 대상 파일이 이미 존재하면 실패하므로 자동화에서는 임시 이름을 사용합니다. 인메모리 DB 복사나 증분 백업 용도는 아닙니다.

복구는 원본을 덮어쓰기 전에 시험합니다

cp backups/app-20260827.db restore-test.db
sqlite3 restore-test.db "PRAGMA integrity_check;"
sqlite3 restore-test.db ".tables"
  1. 애플리케이션을 중지합니다.
  2. 현재 DB 파일과 WAL 관련 파일을 별도 위치에 보존합니다.
  3. 백업을 다른 이름으로 복원해 무결성과 핵심 테이블을 확인합니다.
  4. 검증이 끝난 뒤에만 운영 경로로 교체하고 권한을 확인합니다.

백업과 같은 디스크에만 사본을 두면 디스크 고장이나 랜섬웨어에 함께 영향을 받을 수 있습니다. 별도 장치 또는 버전 관리가 가능한 원격 저장소에도 복제하고 정기적으로 복구 테스트를 해야 합니다.

공식 참고자료

  • SQLite Online Backup API
  • SQLite Command Line Shell
  • SQLite VACUUM INTO

관련 글

  • PostgreSQL 자동화 스크립트 작성법
  • 리눅스에서 자동화 스크립트 작성하는 법

내용 검토 및 업데이트: 2026년 8월 27일

컴퓨터 활용 sqliteSQLite 백업SQLite 복구sqlite 스크립트데이터 관리데이터 복원데이터베이스 백업데이터베이스 복구

글 탐색

Previous post
Next post

Related Posts

컴퓨터 활용

컴퓨터 온도 관리 및 문제 해결 방법

2023년 07월 29일

컴퓨터는 장시간 사용할 경우 발열 문제가 발생할 수 있습니다. 오작동을 방지하기 위해서는 적절한 온도 관리가 필요합니다. 이 글에서는 컴퓨터 온도 관리 방법과 발열 문제 해결 방법에 대해 설명하겠습니다. 온도 관리 컴퓨터가 과열되는 데는 여러 가지 이유가 있습니다. 가장 일반적인 원인은 먼지 축적과 과열입니다. 먼지가 쌓이면 공기 흐름이 차단되고 CPU 및…

Read More
컴퓨터 활용

컴퓨터 조립을 위한 필수 도구와 팁

2023년 08월 07일

컴퓨터를 조립하는 것은 매우 흥미로운 작업일 수 있습니다. 그러나 컴퓨터가 올바르게 조립되었는지 확인하기 위해 올바른 조치를 취하는 것이 중요합니다. 이 글에서, 우리는 컴퓨터를 조립하는 데 필요한 도구와 팁을 자세히 살펴볼 것입니다. 필수 도구 시스템을 조립하는 데 필요한 도구는 다음과 같습니다: 1. 드라이버 스크루드라이버는 나사를 결합하는 데 필요한 도구로 다양한 크기와…

Read More
컴퓨터 활용

알고리즘 문제 해결 패러다임: 분할 정복, 탐욕법, 동적 계획법

2023년 08월 05일

알고리즘 문제 해결은 프로그래밍에서 매우 중요한 부분입니다. 좋은 알고리즘 문제 해결 능력을 가진 개발자는 빠르고 효율적인 코드를 작성할 수 있습니다. 이번 포스트에서는 알고리즘 문제 해결을 위해 자주 사용되는 세 가지 패러다임인 분할 정복, 탐욕법, 동적 계획법에 대해 자세히 알아보겠습니다. 분할 정복 분할 정복은 문제를 더 작고 해결하기 쉬운 하위 문제로…

Read More

최신 글

  • requests로 API 호출 시작하기: 파이썬 웹 데이터 수집 기본 요령
  • 외장하드 백업 습관 만들기: 데이터 손실을 막는 실전 점검 요령
  • 맥북 외부 모니터 연결 시 체크할 점: 화면 출력과 발열 관리 핵심 정리
  • 자동화 스크립트 설계 순서: 실패 없는 반복 업무 자동화 구축 방법
  • 시맨틱 태그를 써야 하는 이유와 의미 있는 웹 문서 작성 방법

최신 댓글

보여줄 댓글이 없습니다.

보관함

  • 2026년 9월
  • 2026년 8월
  • 2026년 2월
  • 2025년 7월
  • 2025년 6월
  • 2025년 5월
  • 2025년 4월
  • 2025년 3월
  • 2025년 2월
  • 2025년 1월
  • 2024년 12월
  • 2024년 11월
  • 2024년 8월
  • 2024년 6월
  • 2024년 5월
  • 2024년 3월
  • 2024년 2월
  • 2023년 11월
  • 2023년 9월
  • 2023년 8월
  • 2023년 7월
  • 2023년 6월
  • 2023년 5월
  • 2023년 4월
  • 2023년 3월
  • 2023년 2월

카테고리

  • Flutter
  • HTML
  • IT 일반
  • Linux
  • 맥북
  • 워드프레스
  • 자바(Java)
  • 컴퓨터 활용
  • 파이썬
  • 프로그래밍

사이트 안내

  • 블로그 소개
  • 문의하기
  • 개인정보 처리방침
©2026 toylee blog | WordPress Theme by SuperbThemes