Bash Script zum erstellen eines File und MySQL Backup mit FTP Upload

Update 21.07.2009
– mysqldump angepasst, damit die dumps auch mit phpMyAdmin eingelesen werden können.
– durchgängige Benennung der Dateien (Zeitformat überall gleich)
– Problembehebung Zeitformat (19:22:20 hat zumindest Mac auf einem smb Share nicht gerne)
– DB information_schema wird nicht mehr mitgesichert
– Vor jeder File Erstellung wird die Zeit neu eingelesen. Dadurch hat man die genaue Übersicht des Backupzeitpunkts

Update 30.06.2009 – INCFILE Pfad angepasst. Nun wird das tar-inc-backup.dat File sicher im gleichen Ordner wie das Script abgelegt.

Gestern habe ich das für mich ultimative Script zum erstellen eines Backup via Bash Script entdeckt.


#!/bin/sh
# Website + MySQL backup script
# Full backup day - Sun (rest of the day do incremental backup)
# Copyright (c) 2005-2006 nixCraft
# This script is licensed under GNU GPL version 2.0 or above
# Modified June 2009 by BlatterTech Informatik www.blattertech.ch
#
# Restore Database Backup
# gunzip mybackup.sql.gzip
# mysql -u USER -p dbname < mybackup.sql # # Restore Files # You need to restore the last full backup first ($FULLBACKUP day) # followed by each of the subsequent incremental backups to the # present day in the correct order. # # --------------------------------------------------------------------- ### Backp Name ### BACKUPSET="Backup of Website xy" SHORTNAME="websitexy" ### System Setup ### DIRS="/home/path/to/files /home/path/to/other/files" BACKUP=/tmp/backup.$$ NOW=$(date +"%Y%m%d") SCRIPTPATH=`dirname $0` INCFILE="$SCRIPTPATH/$SHORTNAME-tar-inc-backup.dat" DAY=$(date +"%u") # 1=Mon, 2=Tue, 3=Wed, .. FULLBACKUP="2" ### MySQL Setup ### MUSER="mysqluser" MPASS="mysqlpassword" MHOST="localhost" MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" GZIP="$(which gzip)" ### FTP server Setup ### FTPD="/path/on/ftpserver" FTPU="ftpuser" FTPP="ftppassword" FTPS="your.ftpserver.com" NCFTP="$(which ncftpput)" ### Other stuff ### EMAILID="your@email.com" ### Start Backup for file system ### [ ! -d $BACKUP ] && mkdir -p $BACKUP || : ### See if we want to make a full backup ### i=$(date +"%Hh%Mm%Ss") if [ ! -f $INCFILE ]; then FTPD="$FTPD/full" FILE="$SHORTNAME-files-full-$NOW-$i.tar.gz" tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS elif [ "$DAY" == "$FULLBACKUP" ]; then FTPD="$FTPD/full" FILE="$SHORTNAME-files-full-$NOW-$i.tar.gz" tar -zcvf $BACKUP/$FILE $DIRS else FTPD="$FTPD/incremental" FILE="$SHORTNAME-files-i-$NOW-$i.tar.gz" tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS fi ### Start MySQL Backup ### # Get all databases name DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')" for db in $DBS do if [ "$db" == "information_schema" ]; then continue fi i=$(date +"%Hh%Mm%Ss") FILE=$BACKUP/$SHORTNAME-mysql-$db.$NOW-$i.sql.gz $MYSQLDUMP -Q --opt --compact -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
# FILE=$BACKUP/$SHORTNAME-mysql-$db.$NOW-$(date +"%T").sql.bz2
# $MYSQLDUMP -Q --opt --compact -u $MUSER -h $MHOST -p$MPASS $db | bzip2 -cq9 > $FILE
done

i=$(date +"%Hh%Mm%Ss")
### Make md5 Sum ###
$(which md5sum) -b $BACKUP/* >$BACKUP/$SHORTNAME-backup$NOW-$i.md5

### Dump backup using FTP ###
#Start FTP backup using ncftp
#If ncftp not aviable, use ftp:
#ftp -inv $FTPS <$T
echo "Hostname: $(hostname)" >>$T
echo "Backup Set: $BACKUPSET"
echo "Backup failed" >>$T
mail -s "BACKUP FAILED" "$EMAILID" <$T rm -f $T fi

Das Script habe ich hier gefunden.

Auf der selben Seite gibt es einen Generator um das Script mit den eigenen Parametern abzufüllen.
http://bash.cyberciti.biz/backup/wizard-ftp-script.php

Ich habe das Script noch ein wenig aufgebohrt. So habe ich die Möglichkeit geschaffen beim Fehlermail mitzugeben welches Backup den Fehler verursacht hat. Zudem habe ich die Bezeichnung des Backuptages auf die Tagesnummer geändert. Somit ist das Script nicht von der Systemsprache abhängig.
Zu guter letzt, habe ich eine Prüfung eingebaut ob das tar.dat File vorhanden ist. Dieses wird für das incrementelle Backup verwendet. Falls dieses nicht existiert, wird ein Fullbackup gemacht.

Kunden von CeviNet können das Script einfach in Ihrem Webspace als Cronjob einbinden:

Cronjob einrichten

Cronjob einrichten

Mac: Umzug einer Bootcamp Installation mit Winclone

Heute auf Macnews.de gesehen:

Mac OS X lässt sich samt der Benutzerdaten leicht auf einen neuen Mac übertragen, doch was tut man mit einer vorhandenen Windows-Partition? Das kostenlose Tool Winclone sorgt dafür, dass der Wechsel auf ein neues System genauso leicht von der Hand geht. Es erstellt im Nu einen Klon der Bootcamp-Partition und kann diesen auf einem anderen Rechner wiederherstellen. Eine neue Version 2.1.2 sorgt nun dafür, dass der Wechsel von einem Bootcamp ins nächste auch fehlerfrei abläuft. 2 Megabyte Download – mindestens Mac OS 10.5 und ein Intel-Mac – englisch – kostenlos.

Mac: Rar unter OS X

Rar wird wie bei Windows unter Mac OS X nicht von Haus auf unterstützt. Anders als bei Windows gibt es für Mac jedoch kein WinRar. Von WinRar gibt es jedoch das Kommandozeilenprogramm rar. Dieses kann z.B. zusammen mit BetterZip dazu eingesetzt werden, Rar-Archive unter OS X zu erstellen.

So muss man dabei vorgehen:

  • rar hier herunterladen und entpacken
  • Danach die Datei rar ins Verzeichnis /usr/bin verschieben. Dies macht man am einfachsten mit dem Terminal, da das Verzeichnis /usr/ versteckt ist:
    sudo mv rar /usr/bin

Hier ein kleiner Beispielcode zum Erzeugen von gesplitteten und passwortgeschützten rar-Archiven:
rar a -v102400 -ep -pGeheimesPasswort -m5 Archiv.rar Datei

  • a = append = in ein Archiv einbinden
  • -v102400 = splitte das Archiv in 100MB-Teile
  • -ep =Pfadangaben nicht mitschreiben
  • -p = Passwortschutz (das Passwort wird ohne Abstand direkt hinter dem -P geschrieben (hier ist das Passwort „GeheimesPasswort
  • -m = Kompressionsrate (0=schwach, 5=beste)
  • Archiv.rar = Name des Archivs, das erstellt wird
  • Datei = Datei oder Ordner, die zu einem Archiv hinzugefügt werden sollen. Es kann auch Datei* benutzt werden, um Dateien mit dem gleichen Anfang zu wählen.

Integration in BetterZip:

In den Einstellungen auf Programme gehen:

betterzip

Unter Ablage Ort gibt man /usr/bin/rar an.

Nikon 300 Advantage

Nikon Schweiz hat bis zum 31. August 2009 die Nikon D300 Advantage.

NikonAdvantage

Bei über 140 Nikon Händlern (Download PDF aller teilnehmenden Händler)) in der Schweiz bekommt man beim Kauf einer Nikon D300 (Body oder Kit) eines von drei Spezialangebot nach Wahl.

Gratis: Nikon Capture NX2 Software

Die leistungsstarke Bildbearbeitungs-Software von Nikon mit der exklusiven U-Point™- Technologie und vier individuell anpass- und speicherbaren Arbeitsbereichen. Capture NX2 ist unkompliziert und intuitiv, so dass Sie sich voll auf die kreative Arbeit mit Tonwerten und Farben konzentrieren können. Capture NX2 unterstützt die Formate JPEG, TIFF und NEF (RAW).

Mit 50% Rabatt: Nikon SB-900 Blitzgerät

Das professionelle, voll ins Nikon Creative Light System integrierte i-TTL-Blitzgerät mit drei Ausleuchtungsprofilen und grossem Zoombereich von 17 bis 200 mm. Das SB-900 erkennt automatisch Farbfilter für Kunstlicht oder Leuchtstofflampen und gibt der Kamera ein Signal zum Umschalten auf den entsprechenden Weissabgleich.

Mit 50% Rabatt: Nikon MB-D10 Multifunktions-Batteriegriff

Der Multifunktions-Batteriegriff MB-D10 für die Nikon D300 steigert die maximale Bildrate bei Serienaufnahmen auf sagenhafte 8 Bilder pro Sekunde und sorgt für grössere Energie-Autonomie unterwegs. Das Pack ist ergonomisch geformt und verfügt über Auslöser, Multifunktionswähler und Einstellräder. Als Energiequellen kommen acht AA-Batterien oder ein Akku zum Einsatz.

Bitte beachten:

Sie können beim Kauf einer Nikon D300 (Body oder Kit) nur von einem dieser drei Spezialangebote profitieren. Die Nikon D300 (Body oder Kit) muss bis spätestens am 31. August 2009 gekauft werden und das Spezialangebot muss zusammen mit der Kamera gekauft/bestellt werden.

builder.yaml.de – CSS Templates einfach gemacht

bild-1

Vor kurzem habe ich den YAML Builder das erste Mal richtig benutzt. Absolut cool das Teil. Einfacher lässt sich ein valides CSS Grundgerüst nicht erstellen.

Einziger Wehmutstropfen. Auch der Builder ist nur für fortgeschrittene User benutztbar. Ohne Kentnisse der Materie,  hat der User keine Ahnung was er genau macht und wie er das „fertige“ Template bearbeiten kann.

Handytasche für den Touch Diamond

Seit längerem war ich auf der Suche nach einer praktischen Gürteltasche für mein Touch Diamond. Die Tasche sollte den Gürtel komplett umschliessen und nicht nur aufsteckbar sein.

Per Zufall war ich dieses Wochenende nun in einem Mobilezone und schaute mir die Handytaschen an. Neben einer relativ grossen Tasche von Samsonite fand ich eine Tasche von Krusell.

Die Krusell Hector:

krussel_hector

Klein, fein, praktisch. Folgende Vorteile hat diese Tasche:

  • Magnet ohne direkten Metallkontakt zum halten der Lasche
  • Sie ist nur für den Gurtgebrauch gebaut. Somit keine zusätzlichen, unnötigen Halterungen wie bei einer Samonite
  • Sieht edel aus
  • Am Gurt verschwindet das Handy fast, wenn das Hemd nicht mehr so straff in der Hose ist
  • Die Tasche ist sehr eng am Körper, so bleibt man weniger hängen

Gallerys für Typo3 – ein Vergleich

Auf der Seite von auskennbert.de gibt es ein Vergleich der verschiedenen Gallery Modulen für Typo3. Sehr interessant und hilft sicher auch dem einen oder anderen die richtige Gallery für seine Typo3 Installation zu finden:

http://www.auskennbert.de/kategorien/typo3/typo3-extension-galerien-im-vergleich-klassisch/

Wenn sich jemand für die Gallery von Menalto interessiert, findet er hier einen interessanten Thread:
http://gallery.menalto.com/node/51887