[android] 안드로이드 Room Database의 데이터베이스 백업 및 복원 방법

안드로이드 앱에서 Room 라이브러리를 사용하여 데이터베이스를 관리하고 있다면, 데이터베이스의 백업과 복원이 필요할 수 있습니다. 예를 들어, 사용자가 새로운 기기로 앱을 이전하거나, 앱의 데이터를 복원해야 하는 경우가 있을 수 있습니다. 이를 위해 데이터베이스를 백업하고 복원하는 방법을 알아보겠습니다.

데이터베이스 백업

Room 데이터베이스를 백업하는 방법은 크게 두 가지가 있습니다. 하나는 외부 저장소에 직접 백업하는 방법이고, 다른 하나는 내부 저장소에 백업하는 방법입니다.

외부 저장소에 백업

Room 데이터베이스를 외부 저장소에 백업하는 경우, 기기의 외부 저장소(예: SD 카드)나 네트워크 저장소를 활용할 수 있습니다. 백업 파일을 외부 저장소에 저장함으로써 앱 외부에서 데이터를 복원할 수 있는 장점이 있습니다.

아래는 Room 데이터베이스를 외부 저장소에 백업하는 예시 코드입니다.

val source = File(getDatabasePath("app-database").path)
val destination = File(Environment.getExternalStorageDirectory(), "app-database-backup")

try {
    source.copyTo(destination, true)
    Log.d("DatabaseBackup", "Database backup successful")
} catch (ex: Exception) {
    Log.e("DatabaseBackup", "Database backup failed: ${ex.message}")
}

내부 저장소에 백업

Room 데이터베이스를 내부 저장소에 백업하는 경우, 앱 자체 내부 저장소에 백업 파일을 생성하여 저장합니다. 내부 저장소에 백업하는 방법은 외부 저장소에 비해 사용자에게 백업 파일에 직접 액세스할 권한을 요청할 필요가 없는 장점이 있습니다.

아래는 Room 데이터베이스를 내부 저장소에 백업하는 예시 코드입니다.

val source = File(getDatabasePath("app-database").path)
val destination = File(context.filesDir, "app-database-backup")

try {
    source.copyTo(destination, true)
    Log.d("DatabaseBackup", "Database backup successful")
} catch (ex: Exception) {
    Log.e("DatabaseBackup", "Database backup failed: ${ex.message}")
}

데이터베이스 복원

백업된 Room 데이터베이스를 복원하는 방법은 간단합니다. 백업 파일의 위치를 알고 있다면, 해당 파일을 Room 데이터베이스 파일의 경로로 복사하여 복원할 수 있습니다.

아래는 백업된 Room 데이터베이스를 복원하는 예시 코드입니다.

val source = File(backupFilePath)
val destination = File(getDatabasePath("app-database").path)

try {
    source.copyTo(destination, true)
    Log.d("DatabaseRestore", "Database restore successful")
} catch (ex: Exception) {
    Log.e("DatabaseRestore", "Database restore failed: ${ex.message}")
}

위의 코드에서 backupFilePath는 백업된 데이터베이스 파일의 위치를 나타냅니다.

앱의 요구사항에 맞게 데이터베이스 백업과 복원 기능을 구현할 수 있도록 위 예시 코드를 참고하여 적절히 수정하여 사용할 수 있습니다.

데이터베이스 백업 및 복원 방법에 대해 더 자세히 알고 싶다면 Android Developers 사이트를 참고하실 수 있습니다.