Kleines Script zum Sichern meiner Datenbanken

Zum Sichern meiner MySQL-Datenbanken auf meinem Webserver habe ich mir ein kleines Script geschrieben. Auf Linux-Seite sieht es wie folgt aus. Es erstellt mittels mysqldump Sicherungen meiner Datenbanken und legt diese als tar-Archiv in ein per FTP zugängliches Verzeichnis. Alternativ könnte man diese Datei per Mail verschicken, aber das wollte ich nicht, um meinen Posteingang nicht zuzumüllen.
#!/bin/bash
NOW=$(date +%Y-%m-%d)
DBS="db1 db2 db3"
BUPATH=/home/ftp/backup/db/
BUFILE=DBs_${NOW}.tar

for DB in $DBS
do
mysqldump $DB -u root --password=geheim > ${BUPATH}${NOW}_${DB}.sql
done

cd ${BUPATH}
tar --remove-files -czf ${BUFILE} ${NOW}*

Jetzt muss ich nur noch jeden Tag (oder wann es mir passt 😉 ) das Archiv vom Server holen. Auch dafür habe ich mir ein Script erstellt. Natürlich ganz modern mit der Powershell:
$Server = "123.123.123.123";
$User = "ftpuser";
$Password = "ftppass";
$Yesterday = (get-date -date ((get-date).AddDays(-1)) -uFormat "%Y-%m-%d");
$BUFile = "DBs_$Yesterday.tar";

# Backup path = current path
$BUPath = (Split-Path -Parent $MyInvocation.MyCommand.Path) + "\";

function ExecuteFTPCommands($FileCommand)
{
$FtpCommandFilePath = [System.IO.Path]::GetFullPath("FTPCommand.tmp");
$FtpCommands = @( $User, $Password, "cd db", "bin", "quote pasv", $FileCommand, "quit" );
$FtpCommand = [String]::Join( "`r`n", $FtpCommands );
set-content $FtpCommandFilePath $FtpCommand;
ftp "-s:$FtpCommandFilePath" $Server;
remove-item $FtpCommandFilePath;
}

# check whether backup file has already been downloaded
if (Test-Path $BUPath$BUFile)
{
write-host ("Backup file for yesterday has already been downloaded: " + $BUPath + $BUFile) -foregroundcolor "red";

# check file size
$dFile = get-item $BUPath$BUFile;
if ($dFile.Length -eq 0)
{
write-host "Size of backup file is 0..." -foregroundcolor "red";
}
else
{
exit;
}
}

write-host "Downloading vServer backup for yesterday ($Yesterday)..." -foregroundcolor "green";
$FtpDownloadCommand = 'GET "' + $BUFile + '"';
ExecuteFTPCommands([string]$ftpDownloadCommand);
Move-Item $BUFile $BUPath -force;

Das Script lädt immer die Datei des vorigen Tages herunter, da ich mein Backup-Script als Cronjob in der Nacht laufen lasse und das Archiv quasi rückwirkend für jeden Tag angelegt wird. Das Powershell-Script habe ich dann wie hier beschrieben auf meinem Desktop verknüpft. Somit kann ich einfach durch einen Doppelklick mein Server-Backup herunterladen. Das sieht dann so aus:

backupvserver.jpg

Über Stefan

Polyglot Clean Code Developer

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert