Diskussion zu "Automatische Backups und Syncs unter OS X"

cool. danke.
 
@ sheep

Ich dachte – was wohl ein Irrtum? - , RsyncX ist identisch mit Rsync, aber eben nur komfortabler, da mit Bedieneroberfläche ausgestattet.

Nachsicht, daß ich so vorwitzig, wo ich mich in der Materie sicher nicht annähernd so gut wie Du auskenne, aber letztendlich wohl Opfer eines (hoffentlich verzeihbaren!) Irrtums wurde.

Und: Glückwunsch zu Deiner schönen Anleitung!
 
Pseudemys schrieb:
@ sheep

Ich dachte – was wohl ein Irrtum? - , RsyncX ist identisch mit Rsync, aber eben nur komfortabler, da mit Bedieneroberfläche ausgestattet.

Nachsicht, daß ich so vorwitzig, wo ich mich in der Materie sicher nicht annähernd so gut wie Du auskenne, aber letztendlich wohl Opfer eines (hoffentlich verzeihbaren!) Irrtums wurde.

Und: Glückwunsch zu Deiner schönen Anleitung!

Es geht hier hauptsaechlich um die Einbindung in Scripts! Das kann man aber wirklich, wenn man den Thread denn komplett liest, herausfinden ;)
 
Als erstes ein dickes Kompliment @sheep! Es ist garnicht hoch genug anzurechnen, dass du dir die Zeit genommen hast diese wirklich ausführliche und vor allem korrekte Anleitung zu schreiben. Das hat bestimmt viel Zeit gekostet. Nochmals vielen Dank dafür! Von solchen Mitgliedern lebt, so glaube ich, dieses Forum!
Für eine ähnliche Aufgabenstellung (Synchronisation eines externen RAIDs auf eine internes Backup-RAID) habe ich ein Skript unter Linux geschrieben. Aus diesem Skript möchte ich dir eine Erweiterung für dein Sysnchronisations-Skript vorschlagen. Ich gebe hier die Original-Syntax an (SuSE Linux 9.x, /bin/bash). Vielleicht kannst du sie auf die Mac OS X-Kompatibilität hin überprüfen. Hier die Zeilen:
# Abfrage, ob $ziel gemountet ist #
mount | grep $ziel > /dev/null
# Abfrage des Rückgabewertes. 0 = erfolgreich, also gemountet, jeder andere Wert = Ziel ist nicht gemountet #
m=$?
if [ "$m" == "0" ]; then
/usr/bin/time /usr/bin/rsync -avE $quelle/ $ziel/ > $ziel/protokoll.log
# ab hier greift dein Skript #
Sollte $ziel nicht gemountet sein, erhalte ich eine Mail mit einem Text, den ich in einer externen Datei (rsync.txt) abgelegt habe. Das sieht so aus:
# Wenn $ziel nicht gemountet ist -> Mail #
else mail -v -s "$ziel ist NICHT gemountet!" user@mail.de < rsync.txt
fi

Viel Spass damit. ;-)
 
@Radioheat

Um was es geht, das habe ich sehr wohl verstanden.

Aber, bei allem gebührenden Respekt vor sheeps so ausführlicher wie verständlicher und damit bewundernswerter Darstellung:

RsyncX (s. mein Verweis darauf oben) arbeitet ja auch mit Skripten, bietet aber eine benutzerfreundliche Oberfläche.

Von daher verstehe ich Sinn und Zweck dieser Vorgehensweise auch nach erneuter Thread-Lektüre immer noch nicht, da man dies alles bequemer (und auch kostenlos) haben kann.


Aber ich lasse mich jederzeit gerne eines Besseren belehren, denn womöglich habe ich ja einen Gesichtspunkt übersehen.
 
Pseudemys schrieb:
RsyncX (s. mein Verweis darauf oben) arbeitet ja auch mit Skripten, bietet aber eine benutzerfreundliche Oberfläche.
Wenn Du das selbst skriptest, bist Du flexibler und kannst es automatisieren. Ausserdem weisst Du genau, was es tut und was nicht, bei einem GUI muss man raten. Das finde ich benutzerfreundlich. :)
Wile
 
Pseudemys schrieb:
@Radioheat

Um was es geht, das habe ich sehr wohl verstanden.

Aber, bei allem gebührenden Respekt vor sheeps so ausführlicher wie verständlicher und damit bewundernswerter Darstellung:

RsyncX (s. mein Verweis darauf oben) arbeitet ja auch mit Skripten, bietet aber eine benutzerfreundliche Oberfläche.

Von daher verstehe ich Sinn und Zweck dieser Vorgehensweise auch nach erneuter Thread-Lektüre immer noch nicht, da man dies alles bequemer (und auch kostenlos) haben kann.


Aber ich lasse mich jederzeit gerne eines Besseren belehren, denn womöglich habe ich ja einen Gesichtspunkt übersehen.

RsyncX greift natuerlich auch nur auf das Kommando zu, jedoch wuesste ich ich nicht wie du RsyncX in ein Skript einfuegen willst. Man muss es halt immer anklicken und ausfuehren lassen, es sei denn du vernwendest irgendwie den Automator. Bei Shellscripts weiss man immernoch am besten, was man da gerade tut. Diese GUI Tools sind fuer Leute mir Angst vor Terminal, was ja auch okay ist. Hier geht es aber nunmal um eine Terminal gestuetzte Backup Variante und da steht es nicht zur Diskussion, ob es nun besser ist als eine GUI Variante. Alle die aus dem Unix Bereich kommen, werden immer eine eigene Scriptloesung bevorzugen. Hier geht es darum Leuten, die so etwas lernen wollen, zu helfen.
 
Danke für die Klarstellung.

Der Unterschied ist mir nun klar.
 
@radiohead
Schöne Erklärung, ich weiss es sehr zu schätzen, dass mir hier beim Antworten so kompetent geholfen wird :).

Erlaube mir aber eine Präzisierung: rsyncX kann auch Cronjobs einrichten und ist daher den meisten anderen GUI-Tools weit überlegen. Trotzdem hat es natürlich einen beschränkten Funktionsumfang.

@hatty
Besten Dank für die lobenden Worte und deine Erweiterung!

Ich habe ja in der Anleitung eine solche Abfrage bereits angesprochen, es ist gut, dass mir die jetzt nachgeliefert wird :). Wenn du einverstanden bist, werde ich das bei Gelegenheit noch einbauen, selbstverständlich mit Hinweis darauf, dass du das geschrieben hast.

Übrigens ginge das aufgrund einer Besonderheit* von OS X noch einfacher (im Cronjob):

/bin/ls /Volumes/<volumen> && <script>

* die darin besteht, dass beim Mounten mit Diskutil (das System benutzt das und nicht das "traditionelle" mount) immer ein Verzeichnis in /Volumes/ angelegt und der Datenträger dort gemountet wird. Daher kann man einfach prüfen, ob das Verzeichnis da ist, denn dann ist das Volumen auch gemountet. Deine Variante ist allerdings sauberer und funktioniert auch auf anderen Systemen als OS X.
 
@sheep
Keine Ursache. Ich meine jedes Wort ernst und will mich auch nicht einschleimen. Die Community lebt von Leuten, die etwas einbringen und nicht nur konsumieren. Aber nun genug gelobhudelt. ;)
Die Erweiterung kannst du gerne einbauen, auch ohne Hinweis auf die Urheberschaft.
Diese Besonderheit von Mac OS X (Verzeichnis unter /Volumes) kannte ich noch nicht. Gut zu wissen, das könnte in Zukunft ein paar Dinge vereinfachen. Ob meine Lösung nun sauberer ist, lass ich mal dahingestellt sein, aber sie ist, wie du schon ganz richtig sagtest, "kompatibler".
Dann bleibt mir nur noch zu sagen: Auch weiterhin auf gute Zusammenarbeit! :D
 
@sheep + radioheat

Durch Eure überzeugenden und ausführlichen Erläuterungen fühle ich mich als Terminal-Skeptiker nun auch ermutigt, dieses Angebot auszuprobieren.

Gibt es ein schöneres Kompliment?
 
hatty schrieb:
...
mount | grep $ziel > /dev/null
m=$?
if [ "$m" == "0" ]; then
/usr/bin/time /usr/bin/rsync -avE $quelle/ $ziel/ > $ziel/protokoll.log
else mail -v -s "$ziel ist NICHT gemountet!" user@mail.de < rsync.txt
fi
Guter Vorschlag.
Die Umsetzung ist aber unnötig kompliziert und kann noch etwas optimiert werden:
Code:
mount | grep $ziel > /dev/null
if [ $? ]
  then
    # backup
  else
    # mail
fi
Kann man vielleicht öfter mal brauchen ;).

Pseudemys schrieb:
...
Aber ich lasse mich jederzeit gerne eines Besseren belehren, denn womöglich habe ich ja einen Gesichtspunkt übersehen.
Du hast den Lernfaktor vergessen ;).
rsyncX funktioniert nur unter Mac OS X;
Wer mit rsync umgehen kann, kann auch unter Linux, FreeBsd und anderen Systemen damit arbeiten.
 
@maceis
Danke für das Lob und die konstruktive Kritik. :)
Du hast recht, die eine Zeile kann man sich sparen. Aber ohne Revanche üben zu wollen; müsste es nicht:
if [ $? -eq 0 ] ; then
lauten? :confused:
 
Ach ja, Du hast natürlich Recht - ich mach wohl zuviel Perl in letzter Zeit :D.
In Perl geht sowas in der Shell leider nicht.
 
Ich kann mir dieses Wortspiel nicht verkneifen:
Heisst das nicht, Perlen vor die Säue zu werfen? rotfl rotfl rotfl
Bitte nicht böse sein, dass musste raus. ;)
 
hallo,
bin seit montag macianer und sowas ist genau das was ich brauche. vielen dank dafür. das werde ich nachher mal versuche. habe (noch) keine große ahnung von der konsole.
was passiert denn, wenn das zieldevice zum zeitpunkt des cronjobs nicht gemountet ist oder der rechner nicht an ist?? wahrscheinlich nichts oder? sollte dies der fall sein, wäre es im sinne des interessierten backupers, dass die synchronisation dann gleich nachgeholt wird, sobald der rechner an ist. dies müsste ich dann noch irgendwie abfangen oder?
auf jeden fall ne super anleitung, gerade für frischeinsteiger.
gruz kasp


klicki bunti ist eben nicht automatisiert
 
hi daskas,
willkommen in der Welt des Mac. :D
Wenn du die Abfrage die ich vorgeschlagen habe einbaust, wird das SKript erst garnicht ausgeführt und du bekommst eine Mail.
Eine Wiederholung im Fehlerfall müsste noch eingebaut werden. Schaun mer mal. ;)
 
daskas schrieb:
was passiert denn, wenn das zieldevice zum zeitpunkt des cronjobs nicht gemountet ist oder der rechner nicht an ist?? wahrscheinlich nichts oder?
Ganz genau. Der Vorschlag von hatty bringt dir allerdings eine bessere Kontrolle, sodass du dafür sorgen kannst, dass eben doch etwas passiert.

Diese Idee mit dem "Nachholen" finde ich an sich sehr gut, muss aber einräumen, dass ich keinerlei Ahnung habe, ob und wie sich so etwas realisieren liesse. Ich persönlich mache es einfach so, dass ich relativ viele Zeitpunkte (alle vier Stunden für das Home-Verzeichnis) definiere, sodass mit hoher Wahrscheinlichkeit zumindest einmal täglich das Backup durchläuft, ohne dass ich "nachhelfen" muss. Vielleicht könnte man etwas machen, indem man bei einem "Leerlauf" einen Link auf dem Desktop erstellen lässt, mit dem man per Doppelklick das Backup nachholen kann.
 
Wie wäre es mit einer Schleife

pseudocode:
Code:
erfolg=nein
while ($erfolg ist nein) {
  (kopieren && erfolg=ja) oder mail
  sleep 1800 # eine halbe Stunde warten
}
 
hmmm, wenn sheep schon ratlos ist????????
mit der schleife ist natürlich schwierig, wenn der rechner aus ist..... würde nur für den fall helfen, wenn laufwerk nicht gemuntet ist.

ich habe eine idee, jedoch ohne eine ahnung zu haben, wie es umzusetzen ist.
man erstellt bei der synchronisation eine datei, die den zeitstempel der synchronisation hat (systemzeit). die legt man im zielverzeichnis mit den daten ab (also je eine zeitstempeldatei, für jedes aktualisierungsintervall/verzeichnis). diesen zeitstempel vegleicht man ebenfalls mit einem cronjob (recht kleines intervall 30min oder so) mit dem intervall der sicherung im cronjob für die daten (systemzeit -zeit in zeitstempeldatei> sicherungsintervall). ist er größer als das im cronjob eingestellte intervall, wird die sicherung ausgeführt. sonst nur verglichen. dass dürfe das system nicht allzu stark ausbremsen. ist nur die frage, wie die systemzeit codiert (datenformat) ist und ob man die irgendwie sinnvol subtrahieren kann.
was haltet ihr davon, ist das möglich, zu aufwändig etc.??
wie das allerdings in der konsole umzusetzen ist ?????
gruz kaspar
 
Zurück
Oben Unten