Backup mit PHP + FTP + SSL Upload

Wie in meinem vorherigen Beitrag geschrieben, gibt es einige Möglichkeiten, ein Backup zu machen. Dabei habe ich lange die Methode mit FTP über SSL eingesetzt. Hier der kurze Writeup, da man die Scripte auch für andere Sachen verwenden kann.

Datenbankbackup mit Upload:

<?
// Backup erstellen
system("mysqldump -uUSERNAME -h127.0.0.1 --port=3306 -pPASSWORD --all-databases > /tmp/dump.sql");

// SSL-Verbindung aufbauen
$conn_id = ftp_ssl_connect("server08.storage.domain.de");
if($conn_id)
 {
 // Login mit Benutzername und Passwort
 $login_result = ftp_login($conn_id, "ftpUSERNAME", "ftpPASSWORD");

// Datei hochladen
 if(ftp_put($conn_id, "backup_".date("Y-m-d").".sql", "/tmp/dump.sql", FTP_BINARY))
 {
 echo "INFO: Datei erfolgreich hochgeladen\n";
 }
 else
 {
 echo "ERROR: FTP-Backup nicht erfolgreich!\n";
 }

// Dump löschen
 unlink("/tmp/dump.sql");

// SSL-Verbindung schließen
 ftp_close($conn_id);
 }
else
 {
 echo("ERROR:Login failed!");
 }

?>

Zum anzeigen der vorhandenen Dateien auf dem FTP Server reicht folgendes Snippet:

<?

// SSL-Verbindung aufbauen
$conn_id = ftp_ssl_connect("server08.storage.domain.de");
if($conn_id)
 {
 // Login mit Benutzername und Passwort
 $login_result = ftp_login($conn_id, "ftpUSERNAME", "ftpPASSWORD");

var_dump(ftp_nlist($conn_id, "."));

// SSL-Verbindung schließen
 ftp_close($conn_id);
 }
else
 {
 echo("ERROR:Login failed!");
 }

?>

Wenn man Jahreweis löschen will kann man es hiermit versuchen:

<?

$year = 2000; // Year to delete

// SSL-Verbindung aufbauen
 $conn_id = ftp_ssl_connect("server08.storage.domain.de");
 if($conn_id)
 {
 // Login mit Benutzername und Passwort
 $login_result = ftp_login($conn_id, "ftpUSERNAME", "ftpPASSWORD");

$list = ftp_nlist($conn_id, ".");

foreach($list as $k => $v)
 {
 if(substr($v, 0, 11) == "backup_".$year)
 {
 echo("delete ".$v."\n");
 ftp_delete($conn_id, $v);
 }
 }

// SSL-Verbindung schließen
 ftp_close($conn_id);
 }
 else
 {
 echo("ERROR:Login failed!");
 }

?>

Einzig was bei der Vergindung zum FTP Server nicht geprüft wird, ist das Zertifikat. Es kann also immer noch wer sich als FTP Server ausgeben.

Leave a comment

Your comment