In diesem Tutorial erstellen wir eine PHP-Datei, mit der schnell und einfach ein Datenbankbackup erstellt werden kann. Diese ist bei einigen WebHostern gelegentlich sehr hilfreich, wenn diese keinen externen Link zu dem phpMyAdmin anbieten.
Erklärung:
- Datenbank-Einstellungen: Ersetzen Sie die Platzhalter $host, $username, $password und $database mit Ihren tatsächlichen Datenbank-Informationen.
- Backup-Ordner: Der Ordner backups/ wird verwendet, um die Backup-Dateien zu speichern. Sie können diesen Ordner nach Ihren Wünschen anpassen. Stellen Sie sicher, dass der Ordner beschreibbar ist.
- Dateiname: Der Dateiname für das Backup wird generiert, indem der Datenbankname und das aktuelle Datum und die Uhrzeit verwendet werden.
- mysqldump-Befehl: Der Befehl mysqldump wird verwendet, um die Datenbank zu exportieren. Er enthält die Datenbank-Einstellungen und den Ausgabedateinamen.
- Befehl ausführen: Die Funktion exec() führt den mysqldump-Befehl aus.
- Überprüfung: Das Skript überprüft, ob die Backup-Datei erstellt wurde, um den Erfolg des Backups zu bestätigen.
Sie sehen die fertigen Codezeilen für die Datei dann aus:
<?php
// Datenbank-Einstellungen
$host = 'localhost'; // Ihr Datenbank-Host
$username = 'your_username'; // Ihr Datenbank-Benutzername
$password = 'your_password'; // Ihr Datenbank-Passwort
$database = 'your_database'; // Der Name Ihrer Datenbank
// Ordner für Backups
$backup_dir = 'backups/';
// Erstelle den Ordner, falls er nicht existiert
if (!is_dir($backup_dir)) {
mkdir($backup_dir);
}
// Dateiname für das Backup
$date = date('YmdHis');
$backup_file = $backup_dir . $database . '_' . $date . '.sql';
// Befehl für mysqldump
$command = "mysqldump -h $host -u $username -p$password $database > $backup_file";
// Führe den Befehl aus
exec($command);
// Überprüfe, ob das Backup erfolgreich erstellt wurde
if (file_exists($backup_file)) {
echo "Datenbank-Backup erfolgreich erstellt: " . $backup_file;
} else {
echo "Fehler beim Erstellen des Datenbank-Backups.";
}
?>
Anwendung:
- Speichern Sie das Skript als sqlbackup.php in einem Ordner auf Ihrem Webserver.
- Stellen Sie sicher, dass der Ordner backups/ im selben Verzeichnis wie das Skript existiert und beschreibbar ist.
- Rufen Sie das Skript über Ihren Webbrowser auf (z.B. http://yourdomain.com/sqlbackup.php).
Wichtige Hinweise:
- Sicherheit: Schützen Sie Ihr Skript und den Backup-Ordner, um unbefugten Zugriff zu verhindern (z.B. mittels .htaccess).
- mysqldump: Stellen Sie sicher, dass das mysqldump-Tool auf Ihrem Server verfügbar ist.
- Pfad: Möglicherweise müssen Sie den Pfad zu mysqldump im Befehl anpassen, falls er nicht im Systempfad enthalten ist.
- Fehlerbehandlung: Das Skript enthält grundlegende Fehlerbehandlung. Sie können diese erweitern, um detailliertere Informationen zu erhalten.
- Bei jedem Aufrufen der Datei sqlbackup.php wird ein Backup erstellt!
Erweiterungen der sqlbackup.php
1. Download-Link
Die sqlbackup.php Datei lässt sich noch um einige sinnvolle Features erweitern, wie etwa einem Download-Link für die zuletzt erstellte Backup-Datei:
// Überprüfe, ob das Backup erfolgreich erstellt wurde
if (file_exists($backup_file)) {
echo "Datenbank-Backup erfolgreich erstellt: " . $backup_file . "<br>";
// Generiere den Download-Link
$download_link = '<a href="' . $backup_file . '">Backup herunterladen</a>';
echo $download_link;
} else {
echo "Fehler beim Erstellen des Datenbank-Backups.";
}
2. Größe der Backup-Datei
Größe: Wir können die Dateigröße des Backups anzeigen, bevor der Download-Link generiert wird.
$filesize = filesize($backup_file);
$filesize_mb = round($filesize / (1024 * 1024), 2);
3. um HTML und CSS erweitern
HTML-Struktur: Das Skript ist jetzt in eine grundlegende HTML-Struktur eingebettet.
CSS-Styling: CSS-Code wurde hinzugefügt, um das Layout zu zentrieren, einen Container mit Rahmen und Schatten zu erstellen und den Download-Link als Button zu gestalten.
<!DOCTYPE html>
<html>
<head>
<title>Datenbank-Backup</title>
<style>
body {
font-family: sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #435165;
}
.container {
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
text-align: center;
}
.container h1 {
text-align: center;
color: #5b6574;
font-size: 24px;
padding: 20px 0 20px 0;
border-bottom: 1px solid #dee0e4;
}
.button {
display: inline-block;
padding: 10px 20px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
}
.error-message {
width: 100%;
padding: 15px;
margin-top: 20px;
background-color: #e06c75;
border: 0;
font-weight: bold;
color: #ffffff;
transition: background-color 0.2s;
color: #fff;
}
.backup-table {
margin-top: 20px;
width: 100%;
border-collapse: collapse;
}
.backup-table th, .backup-table td {
padding: 8px;
border: 1px solid #ddd;
text-align: left;
}
.backup-table th {
background-color: #54585d;
border: 1px solid #54585d;
color: #ffffff;
}
a {
color: #356fbb;
}
</style>
</head>
<body>
<div class="container">
<h1>Datenbank Backup-Datei</h1>
...
</div>
</body>
</html>
4. Backup-Liste in einer Tabelle
Die Backup-Liste in einer Tabelle mit einer Spalte für die Dateigröße (in MB) darstellt:
// Liste aller Backups im Verzeichnis anzeigen
$backups = glob($backup_dir . $database . '_*.sql');
if (!empty($backups)) {
echo '<table class="backup-table"><thead><tr><th>Dateiname</th><th>Größe (MB)</th><th>Download</th></tr></thead><tbody>';
foreach ($backups as $backup) {
$filesize_bytes = filesize($backup);
$filesize_mb = round($filesize_bytes / (1024 * 1024), 2); // Größe in MB umrechnen
echo '<tr><td>' . basename($backup) . '</td><td>' . $filesize_mb . '</td><td><a href="' . $backup . '">Download</a></td></tr>';
}
echo '</tbody></table>';
}
5. Erstellungsdatum der Backups
Das Erstellungsdatum der Backups in der Tabelle anzeigt:
// Erstellungsdatum aus dem Dateinamen extrahieren (Format: YYYYMMDDHHMMSS)
$date_str = substr(basename($backup), strlen($database) + 1, 14);
$date = DateTime::createFromFormat('YmdHis', $date_str);
$formatted_date = $date->format('d.m.Y H:i:s');
6. sql, .zip oder .gzip
Eine aktualisierte Version des Skripts, die es Ihnen ermöglicht, das Backup-Format (.sql, .zip oder .gzip) in der Datei einzustellen
// Änderbar: Backup-Format (sql, zip oder gzip)
$backup_format = 'gzip';
// Komprimierung, falls erforderlich
if ($backup_format == 'zip') {
$command = "zip $backup_file.zip $backup_file.sql";
exec($command);
unlink("$backup_file.sql"); // SQL-Datei nach dem Zippen löschen
$backup_file .= '.zip';
} elseif ($backup_format == 'gzip') {
$command = "gzip $backup_file.sql";
exec($command);
$backup_file .= '.sql.gz';
} else {
$backup_file .= '.sql';
}
Download
Hier könnt Ihr die vollständige sqlbackup.php kostenlos herunterladen und zum eigenen Gebrauch verwenden.
sqlbackup.zip | (Dateigröße: 1,9 KiB, 61 Downloads)
Viel Erfolg bei der Verwendung des Datenbank-Backup-Skripts!