[flutter] 플러터(sqflite)를 사용한 데이터베이스 백업 및 복구 방법

앱을 개발할 때 데이터베이스의 백업 및 복구 기능을 구현하는 것은 매우 중요합니다. 사용자가 중요한 데이터를 보호하고, 문제가 발생했을 때 손쉽게 원래 상태로 복구할 수 있도록 도와줍니다. Flutter에서는 데이터베이스로 sqflite를 자주 사용하는데, 이 글에서는 sqflite 데이터베이스의 백업 및 복구 방법에 대해 알아보겠습니다.

1. 데이터베이스 백업

데이터베이스를 백업하는 가장 간단한 방법은 데이터베이스 파일을 다른 위치로 복사하는 것입니다. Flutter 앱에서는 path_provider 패키지를 사용하여 데이터베이스 파일의 경로를 얻을 수 있습니다. 아래는 데이터베이스를 백업하는 예제 코드입니다.

import 'dart:io';
import 'package:path_provider/path_provider.dart';

Future<void> backupDatabase(String dbName) async {
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String databasePath = appDocDir.path + '/$dbName.db';
  
  File originalFile = File(databasePath);
  if (originalFile.existsSync()) {
    File backupFile = File('${appDocDir.path}/backup_$dbName.db');
    backupFile.writeAsBytesSync(originalFile.readAsBytesSync());
  }
}

위 코드는 backupDatabase 함수를 사용하여 데이터베이스를 백업하는 예제입니다. 데이터베이스 파일을 읽어와 새로운 파일에 복사하는 방식으로 백업을 수행합니다.

2. 데이터베이스 복구

백업된 데이터베이스를 복구하는 것은 간단합니다. 단순히 백업 파일을 데이터베이스 파일의 경로로 복사하면 됩니다. 아래는 데이터베이스를 복구하는 예제 코드입니다.

import 'dart:io';
import 'package:path_provider/path_provider.dart';

Future<void> restoreDatabase(String dbName) async {
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String backupFilePath = appDocDir.path + '/backup_$dbName.db';
  String databasePath = appDocDir.path + '/$dbName.db';
  
  File backupFile = File(backupFilePath);
  if (backupFile.existsSync()) {
    File(databasePath).writeAsBytesSync(backupFile.readAsBytesSync());
  }
}

위 코드는 restoreDatabase 함수를 사용하여 데이터베이스를 복구하는 예제입니다. 백업 파일을 데이터베이스 경로에 덮어씌우는 방식으로 복구를 수행합니다.

마무리

위에서 살펴본 방법을 사용하면 Flutter에서 sqflite 데이터베이스의 백업 및 복구 기능을 간단히 구현할 수 있습니다. 사용자의 데이터를 안전하게 보호하고, 데이터 손실을 방지하기 위해 꼭 필요한 기능이니 꼼꼼히 구현해보시기 바랍니다.