Peter Rehm's Blog

apple,development,life & more

Script für externes Subversion Backup

Ohne Kommentare

Mit diesem Script werden verschiedene Daten gepackt und in mit einem Dateinamen der
das Datum enthält "Datum_Serverbackup.tgz" versehen.

CODE:
#!/bin/bash
filename=`date '+%m%d%y'`
rm -rf /opt/tmpdir/backup/*

mkdir /opt/tmpdir/backup/svn/
mkdir /opt/tmpdir/backup/config/

svnadmin dump /home/svn/cms/ > /opt/tmpdir/backup/svn/cms_svn.dump
svnadmin dump /home/svn/templates/ > /opt/tmpdir/backup/svn/templates_svn.dump

tar -cvf /opt/tmpdir/backup/config/apache.tar /etc/apache2/
tar -cvf /opt/tmpdir/backup/config/opt_scripts.tar /opt/scripts/

tar -czvf /opt/tmpdir/backup/${filename}_serverbackup.tgz /opt/tmpdir/backup/*

Geschrieben von Peter Rehm

30.10.2010 um 23:18:34

Tags für diesen Artikel:

Backupplan

Ohne Kommentare

Als letzte Anmerkung zu dem ganzen Backup Thema noch mein Backup Plan.

Täglich: Datensicherung der geänderten Dateien per rsync. [anleitung]

Monatlich: Datensicherung über Carbon Copy Cloner. [anleitung]

Ich denke das ist ein vernünftige und einfach zu handhabende Datensicherung, so dass ich dem totalen Supergau hoffentlich immer entrinnen kann. Vorbei ist es nun mit dem Blogmarathon über Backups :-)

Geschrieben von Peter Rehm

07.01.2007 um 21:30:32

Tags für diesen Artikel: , ,

Festplatte klonen mit Carbon Copy Cloner

Mit 2 Kommentaren

Der nun letze Teil der Backup Serie behandelt das Spiegeln der gesamten Platte. Dies ist meine zusätzliche Sicherung,
dass ich im Extremfall einfach von der Firewire HDD booten kann.

Ich hab meine Firewire HDD in mehrere Partitionen unterteilt, unter anderem 100GB für die tägliche Sicherung,
wo per rsync die geänderten Dateien kopiert werden. Die andere Partition hat 120GB und die soll das Ziel werden
für die geklonte Version. Dieses Laufwerk heisst treffend "Cloned" :-)

Als erstes solltet Ihr euch CCC (Carbon Copy Cloner) downloaden, SuperDuper wäre eine Alternative.

Das Programm installiert Ihr und startet es. Eure Firewire HDD solltet Ihr mit einer geeigneten Partition,
also so groß wie die Interne bereithalten. Tipp: Partitionieren könnt ihr mit dem Dienstprogramm "Festplatten-Dienstprogramm".

CCC

Ihr seht nun etwas wie oben, nachdem Ihr als Quelle eure Macintosh HD ausgewählt habt.
Als Ziel nehmt Ihr die Partition auf eurer Firewire HDD, auf der Ihr sichern möchtet.

Dann müssen nur noch die Einstellungen bearbeitet werden.

CCC

Wichtig ist nur, dass Ihr den Haken bei bootfähig macht.

Dann kommt noch ein kniffligerer Teil. Wir möchten ja nicht, dass die gesicherten Platten auch von Spotlight indiziert werden.
Daher soll der Index für die Partition ausgeschaltet sein. Dafür benötigen wir ein kleines Shell Skript.
Das heisst Ihr legt eine Textdatei mit der Endung .sh in einem Verzeichnis eurer Wahl an.
Bei mir ~/scripts/ also /Users/peterrehm/scripts/. In die Textdatei kommt folgender Inhalt:

CODE:
#!/bin/bash
sudo mdutil -i off /Volumes/Cloned
sudo mdutil -E /Volume/Cloned


Dann öffnet Ihr den Terminal, wir müssen dem Skript noch die richtigen Rechte geben.
Gebt dazu im Terminal folgendes ein

CODE:
chmod 755 /Users/peterrehm/scripts/no_index.sh


"no_index.sh" Ist der Name des Skripts, dem wir hier die Rechte zum Ausführen geben.

Nun können wir das Skript unter den fortgeschrittenen Einstellungen eintragen.

CCC

Wir tragen es unter "post-Action" ein, das bedeutet, das Programm wird nach dem Kopieren
ausgeführt. Damit sollte das Problem mit Spotlight unterbunden sein.

Nun sind wir mit den Einstellungen fertig.

Um nun beginnen zu können müssen wir dem Programm erst das Admin Passwort
geben, dass es auch alle Dateien kopieren kann.
Dazu klickt man auf das kleine Schloß.

CCC

Danach muss man das Passwort eingeben

CCC

Nun ist alles soweit und man kann auf "klonen" klicken.

CCC

Das dauert nun eine ganze Weile, danach hat mein ein bootbares OSX auf seiner
Firewire HDD.

CODE:
Clone operation completed at: Sonntag, 7. Januar 2007 19:22:50 Uhr
Elapsed time: 75,583333333333 minutes


Tipp: Um von der Firewire HDD booten zu können, muss man während dem Startvorgang
die Taste "alt" drücken.

Geschrieben von Peter Rehm

07.01.2007 um 21:05:36

Tags für diesen Artikel: , , , ,

Subversion Repository sichern und wieder einrichten

Mit 1 Kommentar

Irgendwann kommt man immer mal in die Situation seinen Rechner neuzuinstallieren.
Als Mac User meist dann, wenn man etwas zuviel im System gespielt hat. Und daher
ist die Frequenz entscheidend geringer als bei den Windows Maschinen.

Man will auch möglichst wenig Daten zurück lassen, und daher muss man alles möglich
sichern. Unter anderem auch Subversion.

Als erstes erzeugt Ihr einen Dump eures Repositories

CODE:
svnadmin dump /Users/peterrehm/Library/svn/cms/ > 
/Volumes/Backup/backup_sync/svn_cms.dump


Wobei "/Users/peterrehm/Library/svn/cms/" der Pfad zum Repository ist.
Mit der erstellten Dump Datei kann man das Repository wiederherstellen. Und zwar genau so.

Auf dem neu installierten System erzeugt Ihr ein neues Repository

CODE:
svnadmin create /path/to/new/repos


Nun kann man die Daten wieder einspielen

CODE:
svnadmin load /path/to/new/repos < /Volumes/Backup/backup_sync/svn_cms.dump


Danach solltet Ihr wieder wie gewohnt arbeiten können. Zumindest wenn man es mit meiner
Installationsanleitung installiert hat. :-)

Evtl. muss man noch Permissions setzen, auf den Benutzer/Group der das Repository verwaltet.
Das habe ich aber bisher noch nie gebraucht.

CODE:
chown -R svn:svnusers /path/to/new/repos 
chmod -R g+w /path/to/new/repos/db/


Nähere Informationen findet man hier.

Geschrieben von Peter Rehm

07.01.2007 um 17:30:08

Abgelegt in Verschiedenes

Tags für diesen Artikel: ,

MySQL Backups

Ohne Kommentare

Nur der vollständigkeit halber auch eine Kurzanleitung zum erstellen eines MySQL Dumps.

CODE:
mysqldump -u root --all-databases > /Volumes/Backup/backup_sync/all_db_dump.sql


So werden alle Datenbanken von der MySQL Datenbank localhost in die eine Datei gedumpt.
Man hat auch hier vielfältige Optionen, um das alles genauer einzustellen.

Wichtig ist noch, wenn man ein Passwort für den Benutzer Root gesetzt hat, dass man
dann die -p Option benötigt.

CODE:
mysqldump -u root -p --all-databases > /Volumes/Backup/backup_sync/all_db_dump.sql


Und mit dem Parameter -h kann man den Hostname bestimmen. In der Regel wird localhost
verwendet, wenn man nichts angibt.

Geschrieben von Peter Rehm

07.01.2007 um 17:25:00

Tags für diesen Artikel: ,

Backups unter OSX mit rsync

Mit 6 Kommentaren

Vor kurzem habe ich bei einem Kunden eine kleine Backup Lösung eingerichtet.
Diese sichert die geänderten Dateien auf eine externe Festplatte. Dies habe ich
mit xcopy realisiert.

Ich habe schon öfter nach einer Backup Lösung für OSX gesucht, und außer
einem komplett Image noch kaum was richtig brauchbares gefunden.

Es gibt aber keinen größeren Alptraum als einen Datenverlust, daher habe ich
nach einer Lösung für mein MacBook Pro gesucht, mit dem ich täglich kurz die
geänderten Dateien kopieren kann.

Dabei bin ich auf rsync gestoßen. Die Umsetzung ist denkbar einfach.

CODE:
rsync --archive -u -v /Users/peterrehm/ /Volumes/SEA_DISK/backup_sync/peterrehm/ 


Und das machen die Parameter:

CODE:
-u kopiert ist für das kopieren der geänderten Dateien zuständig
-v Zeigt die ganzen Nachrichten an, ich will ja schließlich wissen was passiert
--archive ist ein synonym für die Parameter -rlptgoD
-r Kopiert alle Verzeichnisse rekursiv
-l symlinks werden als Symlinks kopiert
-p die rechte bleiben erhalten
-t Timestamp bleibt erhalten
-g Die Gruppenzuordnung bleibt erhalten
-o lässt verzeichnisse aus, wenn Timestamp erhalten bleibt
-D kopiert sockets,fifos,....


Allerdings zeigt er beim Aufruf immer alle Dateien an, egal ob er Sie kopiert oder nicht.
Das finde ich etwas doof, da man dann nicht sieht welche Dateien sich explizit verändert haben.

Ich verwende folgendes Skript um meine Daten zu sichern, damit wird mein Web Directory gesichert,
und das ganze Home verzeichnis. Ratsam sind dabei auch die Excludes, wie z.B. das dass keine
Subversion Verzeichnisse (.svn) kopiert werden. Die muss ich nicht im Backup haben.

CODE:
#!/bin/bash
sudo rsync --archive -u -v -C --exclude="temp" --exclude="/Applications/" --exclude="tmp" /Users/peterrehm/ /Volumes/Backup/backup_sync/peterrehm/ 
sudo rsync --archive -u -v -C --exclude=.svn /Library/WebServer/Documents/ /Volumes/Backup/backup_sync/www/


Update:

Das tolle ist, nach dem ersten mal kopieren geht das razz fazz. Der Backupvorgang geht nach ersten Messungen weniger als 2 Minuten.
Nun gibt es wirklich tägliche Backups.

Update #2

Nun mein volles Backup Inklusive MySQL und SVN Dumps, wie in den anderen Blog einträgen von heute beschrieben.

CODE:
#!/bin/bash
sudo rsync --archive -u -v -C --exclude="temp" --exclude="/Applications/" --exclude="tmp" /Users/peterrehm/ /Volumes/Backup/backup_sync/peterrehm/ 
sudo rsync --archive -u -v -C --exclude=.svn /Library/WebServer/Documents/ /Volumes/Backup/backup_sync/www/
mysqldump -u root --all-databases > /Volumes/Backup/backup_sync/all_db_dump.sql
svnadmin dump /Users/peterrehm/Library/svn/cms/ > 
/Volumes/Backup/backup_sync/svn_cms.dump


Update #3
Man sollte evtl auch Parallels Desktop excluden, da sonst große Datenmengen kopiert werden müssen wegen dem Windows Müll.
Das muss man aber selber entscheiden.

Update #4

-C lässt auch core Files weg, das ist etwas suboptimal, wenn man Projekte mit einem Core Verzeichnis hat.
Daher --include=core hinzufügen oder einfach ganz auf -C verzichten.

Ich habe bei meinem Backup nun auch .Trash verzichtet, da ich meinen Papierkorb nicht backupen will :-)

In meiner aktuellen Version lasse ich auch die Dateien löschen, die auf der Quelle nicht mehr vorhanden sind.
Das hält das Backup wesentlich kleiner.

Das Script sieht dann jetzt so aus, die beiden rsync zeilen.

CODE:
sudo rsync --archive --delete -u -v --exclude="temp" --exclude=".Trash" --exclude="/Applications/"
 --exclude="tmp" /Users/peterrehm/ /Volumes/Backup/backup_sync/peterrehm/ 
sudo rsync --archive --delete -u -v /Library/WebServer/Documents/ /Volumes/Backup/backup_sync/www/

Geschrieben von Peter Rehm

07.01.2007 um 14:10:16

Abgelegt in Apple

Tags für diesen Artikel: , , ,

Backup per XCOPY unter Windows

Mit 1 Kommentar

Backups sind sehr wichtig, das weiss zumindest jeder der Schon einen Datenverlust hinter sich gebracht hat.
Daher sollte man möglichst regelmäßig seine Daten sichern. Dies ist heutzutage dank den günstigen Flash Speichern oder externen Festplatten auch kein Luxus mehr.

Allerdings ist es Zeitaufwendig jedesmal von Hand die einzelnen Ordner zu kopieren.
Daher kann man sich eine .bat Datei mit den Kopierbefehlen erstellen, und die per Cronjob für arme,
also den geplanten Aufgaben täglich ausführen lassen. Will man das nicht
automatisiert haben, dann kann man den Backupvorgang auch einfach durch doppelklicken auf die .bat Datei starten.

Zum kopieren eignet sich hervorragend XCOPY, und das sieht dann ungefähr so aus:

CODE:
xcopy Desktop Desktop2 /Y /E /I /C /H /R /D


Y - unterdrückt das Nachfragen beim Überschrieben
E - Kopiert auch alle Unterverzeichnissse
I - Geht davon aus, dass der Zielpfad ein Verzeichnis ist, wenn mehrere Dateien kopiert werden
C - Kopiert weiter auch bei Fehlern
H - Kopiert auch versteckte Dateien
R - Überschreibt schreibgeschützte Dateien
D - Kopiert alle Dateien die neuer sind als die bereits vorhandenen

Weitere Informationen liefert

CODE:
help xcopy

Geschrieben von Peter Rehm

27.12.2006 um 12:56:58

Abgelegt in Verschiedenes

Tags für diesen Artikel: , ,