Ausführen von rsync bei Netzwerkverbindung

Ausführen von rsync bei Netzwerkverbindung

Ich habe einen Mac, der immer eingeschaltet ist und mein Hauptcomputer ist. Ich habe auch ein MacBook und versuche, meine iPhoto-Bibliothek zu synchronisieren. Ich kann also erfolgreich rsync zum Synchronisieren von Dateien verwenden. Ich verwende einen Cron, damit es einmal am Tag ausgeführt wird.

In Wirklichkeit ist das MacBook nicht immer eingeschaltet, daher suche ich nach einer Möglichkeit, rsync auszuführen, wenn die beiden Computer mit demselben WLAN-Netzwerk verbunden sind. Ich schätze, die beste Möglichkeit ist, rsync auszuführen, wenn der Flughafen verbunden ist. Was ist der beste Weg?

Antwort1

Da rsync nur das ändert, was geändert werden muss, kann es nicht schaden, Ihren Cron-Job einfach einmal pro Stunde laufen zu lassen. Wenn wenig oder nichts kopiert werden muss, dauert es sehr wenig Zeit. Sie möchten aber nicht, dass der Job beim Versuch hängen bleibt. Sie können also ein kleines Shell-Skript erstellen, das prüft, ob Ihr MacBook läuft, und es, wenn ja, den rsync-Befehl ausführen lassen. Nur für den Fall, dass ein Problem auftritt und der rsync-Job hängen bleibt oder länger als eine Stunde dauert, sollten Sie sicherstellen, dass Sie keine neue Instanz starten, wenn die vorherige noch läuft. Hier ist ein Beispielskript (das ich MyRsyncJob nennen werde und das Sie überarbeiten müssen):

[ -s /var/run/MyRsyncJob ] && {
  PID=$(cat /var/run/MyRsyncJob)
  echo "MyRsyncJob is still running (PID $PID)" >&2
  exit 1
}
ping  -c 1 -o MacBook >&- || exit 1 # Exit if MacBook isn't reachable
trap 'rm /var/run/MyRsyncJob' 0 15 # Remove run file upon exit or TERM signal
echo $$ >> /var/run/MyRsyncJob     # Put PID into run file
rsync -zave ssh /path/to/my/iphoto/library/ MacBook:/path/to/destination/directory

Ich hoffe das hilft.

verwandte Informationen