Notizen in Obsidian auch unterwegs zur Verfügung haben, lässt sich mit einem Vault in der iCloud lösen — als Teilmenge des eigentlich Vaults auf dem Desktop.
Einleitung
Je intensiver man sich mit einem Tool beschäftigt, desto mehr lernt man über die Möglichkeiten, aber auch über die Schwächen. Nach wie vor ist für mich Obsidian ein großartiges Werkzeug, mit dem ich vielen Aspekte nicht nur im Beruf strukturieren und ablegen kann. Wissensmanagement, Aufgabenplanung und Sammlung von Ideen. Mit keinem anderen Tool konnte ich in der Vergangenheit so gut arbeiten wie mit Obsidian. Die Anwendung ist schnell, bleibt übersichtlich und lässt sich gut an die eigenen Bedürfnisse anpassen. Ganz anders als das etwa bei Evernote der Fall war.
Zudem wird alles sauber als Markdowndatei lokal gespeichert. Genau hier kann jedoch ein Problem entstehen, denn manchmal möchte man auch von anderen Geräten auf Notizen zugreifen, möglicherweise sogar von unterwegs. Auf den ersten Blick gibt es dafür eine einfache Lösung: Obsidan Sync. Für den Service werden allerdings monatlich 8 Dollar aufgerufen. Mir ist schon klar, dass nicht wirklich kostenlos ist und der Preis durchaus seine Berechtigung hat. Allerdings bin ich dabei, Abos soweit wie möglich zu reduzieren, insbesondere wenn ich nur selten bis gelegentlich in Anspruch nehmen würde.
Daten aus meinem lokalen Vault, der sich auf meinem iMac befindet, auf dem iPad zu haben, wäre für mich lediglich nice to have — so oft habe ich nicht das Bedürfnis, auf dem iPad etwas nachzuschauen oder eine neue Notiz anzulegen. Zudem ist mein hauptsächlich genutzter Vault sehr umfangreich. Wenn überhaupt bräuchte ich nur eine Teilmenge auf dem iPad und iPhone.
Erster Versuch mit rsncy
In den vergangenen Wochen überlegte ich immer mal wieder, wie sich ein Teil meines Vaults mit anderen Mitteln synchronisieren ließe. Im Grunde genommen gibt es bei Obsidian bereits eine kostenlose Lösung auf den mobilen Geräten. Dort kann man einen Vault in der iCloud anlegen — nachträglich einen als iCloud-Vault definieren, geht allerdings nicht. Auf dem Desktop gibt es diese Option grundsätzlich nicht (warum auch immer).
Meine Idee an dieser Stelle: Synchronisierung von einem Ordner in Obsidian mit einem Ordner in der iCloud, der in einem auf dem iPad erstellten Vault liegt. So habe ich dann zwar nicht einen Vault, der synchronisiert, aber eine Auswahl — was genau das ist, was bei einem sehr großen Vault sinnvoll ist.
Verwendet werden kann dafür der Befehl rsync, der unter Mac OS X zum System gehört. Da rsync aber nur für die Synchronisierung in eine Richtung gedacht ist, muss er zweimal hintereinander angewendet werden.
Zunächst probierte ich das mit zwei lokalen Ordnern aus:
rsync -cau /Users/tboley/Desktop/quelle/ /Users/tboley/Desktop/ziel/
rsync -cau /Users/tboley/Desktop/ziel/ /Users/tboley/Desktop/quelle/
Nach etwas Sucharbeit fand ich die Stelle unter Mac OS X, wo die iCloud-Dateien der Apps gespeichert werden:
~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/mobileVault/
Daraus ergaben sich dann zwei Shell-Anweisungen, die ich über „Kurzbefehle“ automatisierte:
rsync -cau /Users/tboley/SynologyDrive/Notizen/Sync/ ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/mobileVault/
rsync -cau ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/mobileVault/ /Users/tboley/SynologyDrive/Notizen/Sync/
Es sollten in jedem Fall immer die synchronisierten Dokumente geschlossen werden. Zudem braucht iCloud etwas Zeit zur Synchronisierung.
Grenzen von rsncy und eine mögliche Alternative
Probleme gibt es allerdings dann, wenn eine Datei in einem Verzeichnis gelöscht oder umbenannt wird. Gelöschte Dateien werden wieder aus dem anderen Ordner synchronisiert, umbenannte Dateien werden dann parallel mit der Datei unter dem alten Namen synchronisiert. Leider gibt es keinen Parameter in rsync dafür, mit dem sich das regeln ließe. Die Ursache dafür liegt in dem, wofür rsync eigentlich gedacht ist: Synchronisierung in eine Richtung.
Die Alternative an dieser Stelle scheint Syncthing zu sein. Allerdings ist der große Haken an dieser Stelle: Es funktioniert nicht mit lokalen Ordnern, passt also daher nicht für mein Szenario.
Der nächste Versuch war dann, mit Unision zu arbeiten. Dazu muss ich vorher auf dem Mac Hombrew korrekt installiert sein. Homebrew ist ein Packetmanager für Mac OS X.
Um überhaupt Hombrew installieren zu können, müssen vorher die Mac OS Entwicklertools für die Shell installiert werden:
xcode-select --install
Über die Seite von Homebrew lädt man anschließend das Installationspaket herunter.
Danach kann Unison installiert über die Shell installiert werden:
brew install unison
Damit ist dann unison endlich installiert.
Bidirektionale Synchronisierung mit unison
Ein Abgleich von Verzeichnissen ist dann ziemlich einfach:
unison /Users/tboley/Desktop/quelle/ /Users/tboley/Desktop/ziel/
Mit dem Flag -silent
geschieht das Ganze dann ohne Nachfrage. Die Verzeichnisse werden bidirektional abgeglichen — Änderungen an Dateinamen oder auch das Löschen von Dateien werden berücksichtigt.
Daher sieht dann der neue Befehl für den Obsidian-Abgleich so aus:
unison /Users/tboley/SynologyDrive/Notizen/Sync/ ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/mobileVault/ -silent
Derzeit gibt es bei Kurzbefehle noch eine Fehlermeldung und auch in der Shell läuft nicht alles rund. Ursache dafür ist, dass im synchronisierten Ordner noch eine unsichtbare Datei liegt, die zu Problemen führt. Diese Datei ist von Obsidian selber. Um diese auszuschließen für die Synchronisierung, muss man in einem unision Profil eine Ausnahme definieren.
Die Profile sind im folgenden Verzeichnis:
~/Library/Application Support/Unison
Im Finder gelant man über das Menü und den Punkt Gehe zu -> Gehe zu Ordner
und die Eingabe des Pfades an das Verzeichnis.
Hier reicht es bereits, wenn man in der Datei default.prf
folgenden Eintrag ergänzt:
ignore = Path .obsidian
Durch Synchronisierung mit unison müssen die Notizen nicht explizit geschlossen werden.
Fazit
Ich habe jetzt für mein Mac OS X Menü einen Kurzbefehl, der meinen Vault beziehungsweise einen festgelegten Teil synchronisiert. Das muss ich dann zwar manuell anstoßen, ist aber absolut ausreichend. Wobei man natürlich hier noch mit cron eine Automatisierung durchführen könnte. Das wäre dann ein neues Projekt.
Eine Antwort