Kleines Script zum Sichern meiner Datenbanken

URL dieses Beitrags: http://blog.stefan-macke.com/2007/04/28/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.

  1. #!/bin/bash
  2. NOW=$(date +%Y-%m-%d)
  3. DBS="db1 db2 db3"
  4. BUPATH=/home/ftp/backup/db/
  5. BUFILE=DBs_${NOW}.tar
  6.  
  7. for DB in $DBS
  8. do
  9.     mysqldump $DB -u root --password=geheim > ${BUPATH}${NOW}_${DB}.sql
  10. done
  11.  
  12. cd ${BUPATH}
  13. 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:

  1. $Server = "123.123.123.123";
  2. $User = "ftpuser";
  3. $Password = "ftppass";
  4. $Yesterday = (get-date -date ((get-date).AddDays(-1)) -uFormat "%Y-%m-%d");
  5. $BUFile = "DBs_$Yesterday.tar";
  6.  
  7. # Backup path = current path
  8. $BUPath = (Split-Path -Parent $MyInvocation.MyCommand.Path) + "\";
  9.  
  10. function ExecuteFTPCommands($FileCommand)
  11. {
  12.         $FtpCommandFilePath = [System.IO.Path]::GetFullPath("FTPCommand.tmp");
  13.         $FtpCommands = @( $User, $Password, "cd db", "bin", "quote pasv", $FileCommand, "quit" );
  14.         $FtpCommand = [String]::Join( "`r`n", $FtpCommands );
  15.         set-content $FtpCommandFilePath $FtpCommand;
  16.         ftp "-s:$FtpCommandFilePath" $Server;
  17.         remove-item $FtpCommandFilePath;
  18. }
  19.  
  20. # check whether backup file has already been downloaded
  21. if (Test-Path $BUPath$BUFile)
  22. {
  23.         write-host ("Backup file for yesterday has already been downloaded: " + $BUPath + $BUFile) -foregroundcolor "red";
  24.  
  25.         # check file size
  26.         $dFile = get-item $BUPath$BUFile;
  27.         if ($dFile.Length -eq 0)
  28.         {
  29.                 write-host "Size of backup file is 0..." -foregroundcolor "red";
  30.         }
  31.         else
  32.         {
  33.                 exit;
  34.         }
  35. }
  36.  
  37. write-host "Downloading vServer backup for yesterday ($Yesterday)..." -foregroundcolor "green";
  38. $FtpDownloadCommand = 'GET "' + $BUFile + '"';
  39. ExecuteFTPCommands([string]$ftpDownloadCommand);
  40. 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
Füge diesen Artikel zu deinen Bookmarks hinzu Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • del.icio.us
  • bodytext
  • MisterWong
  • Reddit
  • Technorati
  • Spurl
  • description

Einen Kommentar schreiben

XHTML: Diese Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>