Isar Plus

Yedekleme

Isar veritabanınızı nasıl yedekleyeceğinizi öğrenin

Veritabanı Yedeği

Isar Plus, copyToFile() metodu ile veritabanınızın yedeğini almanın basit bir yolunu sunar.

Yedek Oluşturma

Tüm veritabanınızın düzenlenmiş bir yedeğini oluşturmak için copyToFile() kullanın. Yedeği kaydetmek istediğiniz tam dosya yolunu belirtin:

// Isar engine için yedek
isar.copyToFile('/path/to/backup.isar');
// SQLite engine için yedek
isar.copyToFile('/path/to/backup.sqlite');

copyToFile() metodu veritabanının compacted (sıkıştırılmış değil, düzenlenmiş) bir versiyonunu oluşturur. Veritabanınızı yedeklemenin önerilen yolu budur.

Pratik Örnek

Zaman damgalı bir yedek oluşturmayı gösteren tam bir örnek:

import 'dart:io';
import 'package:isar_plus/isar_plus.dart';
import 'package:path/path.dart' as path;
import 'package:path_provider/path_provider.dart';

Future<String> createBackup(Isar isar) async {
  // Uygulamanın dökümanlar dizinini al
  final dir = await getApplicationDocumentsDirectory();
  
  // Zaman damgalı yedek dosya adı oluştur
  final timestamp = DateTime.now().toIso8601String().replaceAll(':', '-');
  final backupName = 'backup_$timestamp.isar';
  
  // Tam yedek yolu
  final backupPath = path.join(dir.path, 'backups', backupName);
  
  // Yedekler dizini yoksa oluştur
  final backupsDir = Directory(path.join(dir.path, 'backups'));
  if (!backupsDir.existsSync()) {
    backupsDir.createSync(recursive: true);
  }
  
  // Yedeği oluştur
  isar.copyToFile(backupPath);
  
  print('Yedek oluşturuldu: $backupPath');
  return backupPath;
}

En İyi Uygulamalar

Gereksiz veritabanı büyümesini önlemek için copyToFile() metodunu diğer transaction'lar aktifken çalıştırmaktan kaçının.

Ne Zaman Yedek Alınmalı

  • Büyük veri taşıma işlemlerinden önce
  • Veritabanı şemasını değiştiren uygulama güncellemelerinden önce
  • Veri güvenliği için periyodik olarak
  • Toplu silme işlemlerinden önce

Yedekten Geri Yükleme

Bir yedekten veritabanını geri yüklemek için:

  1. Mevcut Isar örneğini kapatın
  2. Yedek dosyasını veritabanı konumuna kopyalayın
  3. Bu dosyayı işaret eden yeni bir Isar örneği açın
// Mevcut örneği kapat
isar.close();

// Yedeği veritabanı konumuna kopyala
final backupFile = File('/path/to/backup.isar');
final dbPath = path.join(directory, 'default.isar');
await backupFile.copy(dbPath);

// Geri yüklenen veritabanını aç
final restoredIsar = await Isar.openAsync(
  schemas: [YourSchema],
  directory: directory,
);

Son Güncelleme