private bool BackupDatabase(SQLiteConnection connection, string backupName)
{
try
{
string dataSource = Path.Combine(
Path.GetDirectoryName(LibraryConfiguration.Instance.StoragePath) ?? String.Empty, backupName);
var connectionStringBuilder = new SQLiteConnectionStringBuilder()
{
DataSource = dataSource,
Version = 3,
//Set page size to NTFS cluster size = 4096 bytes
PageSize = 4096,
CacheSize = 10000,
JournalMode = SQLiteJournalModeEnum.Wal,
Pooling = true,
ForeignKeys = true,
LegacyFormat = false,
FailIfMissing = false
};
using (var backupConnection = new SQLiteConnection(connectionStringBuilder.ToString()))
{
backupConnection.Open();
connection.BackupDatabase(backupConnection, "main", "main", -1, null, -1);
}
return true;
}
catch (Exception ex)
{
_log.Error("Unable to backup database.", ex);
return false;
}
}