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:












