Start · Sprachen · PHP · Referenz · fbird_backup

fbird_backup

Funktion

Erstellt eine Sicherungskopie einer Firebird/InterBase-Datenbank über ein Service-Handle.

seit PHP 5.0.0 Kategorie: db

Signatur

fbird_backup(resource $service_handle, string $source_db, string $dest_file, int $options = 0, bool $verbose = false): mixed

Beschreibung

fbird_backup() ist ein Alias für ibase_backup() und gehört zur Firebird/InterBase-Erweiterung von PHP. Die Funktion startet einen Backup-Vorgang auf dem Datenbankserver und schreibt die Sicherungskopie in eine Datei auf dem Server-Dateisystem.

Als erstes Argument wird ein Service-Handle benötigt, das zuvor mit ibase_service_attach() geöffnet wurde. Der Parameter $source_db gibt den Pfad zur Quelldatenbank auf dem Server an, während $dest_file den Zielpfad der Backup-Datei definiert.

Über den Parameter $options können bitweise kombinierte Konstanten übergeben werden, z. B. IBASE_BKP_IGNORE_CHECKSUMS, IBASE_BKP_IGNORE_LIMBO, IBASE_BKP_METADATA_ONLY oder IBASE_BKP_NO_GARBAGE_COLLECT, um das Verhalten des Backups anzupassen.

Ist $verbose auf true gesetzt, werden während des Backup-Vorgangs detaillierte Fortschrittsinformationen ausgegeben, was bei großen Datenbanken zur Diagnose nützlich sein kann.

Parameter

Name Typ Default Beschreibung
$service_handle Pflicht resource Ein aktives Service-Handle, das mit ibase_service_attach() geöffnet wurde.
$source_db Pflicht string Pfad zur Quelldatenbank auf dem Firebird/InterBase-Server (serverseitiger Pfad).
$dest_file Pflicht string Serverseitiger Pfad zur Zieldatei, in die das Backup geschrieben werden soll.
$options int 0 Bitweise kombinierte Optionen, z. B. IBASE_BKP_IGNORE_CHECKSUMS, IBASE_BKP_IGNORE_LIMBO, IBASE_BKP_METADATA_ONLY oder IBASE_BKP_NO_GARBAGE_COLLECT.
$verbose bool false Wenn true, werden detaillierte Fortschrittsausgaben während des Backup-Vorgangs ausgegeben.

Rückgabewert

Typ
mixed
Beschreibung
Gibt true zurück, wenn das Backup erfolgreich gestartet wurde, oder false bei einem Fehler. Bei aktivierter Verbose-Ausgabe werden Statusmeldungen direkt ausgegeben.

Beispiele

Einfaches Datenbank-Backup erstellen

<?php
// Verbindung zum Firebird-Service herstellen
$serviceHandle = ibase_service_attach('localhost', 'sysdba', 'masterkey');

if ($serviceHandle) {
    $sourceDb  = '/var/lib/firebird/data/meinedatenbank.fdb';
    $backupFile = '/var/backups/meinedatenbank_' . date('Ymd_His') . '.fbk';

    $result = fbird_backup($serviceHandle, $sourceDb, $backupFile);

    if ($result) {
        echo "Backup erfolgreich erstellt: " . $backupFile;
    } else {
        echo "Fehler beim Erstellen des Backups.";
    }

    ibase_service_detach($serviceHandle);
} else {
    echo "Verbindung zum Service fehlgeschlagen.";
}
Backup erfolgreich erstellt: /var/backups/meinedatenbank_20240101_120000.fbk

Backup mit Optionen und Verbose-Ausgabe

<?php
// Service-Handle öffnen
$serviceHandle = ibase_service_attach('localhost', 'sysdba', 'masterkey');

if ($serviceHandle) {
    $sourceDb   = '/var/lib/firebird/data/meinedatenbank.fdb';
    $backupFile = '/var/backups/meta_only_backup.fbk';

    // Nur Metadaten sichern, Limbo-Transaktionen ignorieren
    $options = IBASE_BKP_METADATA_ONLY | IBASE_BKP_IGNORE_LIMBO;

    $result = fbird_backup($serviceHandle, $sourceDb, $backupFile, $options, true);

    if ($result) {
        echo "Metadata-Backup erfolgreich abgeschlossen.";
    } else {
        echo "Fehler beim Backup-Vorgang.";
    }

    ibase_service_detach($serviceHandle);
}
Metadata-Backup erfolgreich abgeschlossen.

// Wichtig · Fallstricke

Alias: fbird_backup() ist ein Alias von ibase_backup(). Beide Funktionen verhalten sich identisch. In modernem Code sollte geprüft werden, welche Variante auf dem jeweiligen System verfügbar ist.

Serverseitige Pfade: Die Pfade für $source_db und $dest_file werden auf dem Datenbankserver interpretiert, nicht auf dem PHP-Server. Stellen Sie sicher, dass der Firebird-Prozess Schreibrechte auf das Zielverzeichnis hat.

Verfügbarkeit: Die Funktion ist nur verfügbar, wenn die PHP-Interbase/Firebird-Erweiterung (php-interbase bzw. php-firebird) installiert und aktiviert ist. Ab PHP 8.0 wurde die Erweiterung aus dem PHP-Core entfernt und muss separat installiert werden.

Sicherheit: Übergeben Sie keine unvalidierten Benutzereingaben als Datei- oder Datenbankpfade, da dies zu Path-Traversal-Angriffen führen kann.