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 uns Stefan

Polyglot Clean Code Developer

Schreibe einen Kommentar

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

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax