rsync script als loginhook -- IO error encountered

(for English version, see below)

Seit vielen Jahren synchonisiere ich ausgewählte User-Verzeichnisse per LoginHook und rsync auf ein NAS. Seit der Migration auf Catalina gibt es Probleme.

Im Script rufe ich

sudo -u $username rsync -auvz --del /Users/$username/Documents Sync@172.16.1.111::$userSync ;

auf.

Das funktioniert einwandfrei im Terminal-Fenster.

Wird dieses Script allerdings per LoginHook ausgeführt gibt es immer folgende Fehlermeldung:

IO error encountered -- skipping file deletion

Hat jemand eine Ahnung, was da stört?


Since many Years I sync some user directories with a LoginHook and rsync to a NAS. After migration to Catalina it does not work anymore.

In my script I call

sudo -u $username rsync -auvz --del /Users/$username/Documents Sync@172.16.1.111::$userSync ;

This works fine when calling from Terminal window.

When calling it as a LoginHook I got following message:

IO error encountered -- skipping file deletion

Does anyone has an idea what helps?

Mac mini, macOS 10.13

Gepostet am 21. Mai 2020 03:15

Antworten
Frage gekennzeichnet als Höchstrangige Antwort

Gepostet am 14. Juni 2020 07:57

So, jetzt habe ich mal wieder einen Tag mit dem Thema verbracht...

crontab kenne ich noch aus Zeiten, zu denen ich mich intensiver mit Unix beschäftigt habe. Bei MacOS wird hiervon allerdings abgeraten und auf LaunchAgents verwiesen. Leider scheinen die Login/Logout-Hooks ebenfalls nicht mehr weiter unterstützt.


Grundübel sind die neuen Sicherheitsvorkehrungen bei MacOS 10.15, welche spezielle Freigaben der Verzeichnisse "Desktop" und "Documents" erfordern. Das macht die Arbeit mit Skripten und LoginHooks in diesen Verzeichnissen unmöglich. Im Terminal-Fenster funktioniert das Skript nur, weil ich "terminal" Festplattenvollzugriff gegeben habe.


Leider habe ich noch keine sinnvolle Möglichkeit gefunden, mit LaunchDeamons zuverlässig Aktionen beim User-Logout auszuführen. Daher scheidet dieser "moderne" Ansatz aus. (bei crontab hätte ich ähnliche Probleme)


Fazit: Wir verschieben unsere Dateien jetzt in andere Verzeichnisse, welche von Apple nicht so verrammelt sind und fahren mit den alten Skripten weiter solange das geht.

Ähnliche Fragen

10 Antworten
Frage gekennzeichnet als Höchstrangige Antwort

14. Juni 2020 07:57 als Antwort auf Luckiye

So, jetzt habe ich mal wieder einen Tag mit dem Thema verbracht...

crontab kenne ich noch aus Zeiten, zu denen ich mich intensiver mit Unix beschäftigt habe. Bei MacOS wird hiervon allerdings abgeraten und auf LaunchAgents verwiesen. Leider scheinen die Login/Logout-Hooks ebenfalls nicht mehr weiter unterstützt.


Grundübel sind die neuen Sicherheitsvorkehrungen bei MacOS 10.15, welche spezielle Freigaben der Verzeichnisse "Desktop" und "Documents" erfordern. Das macht die Arbeit mit Skripten und LoginHooks in diesen Verzeichnissen unmöglich. Im Terminal-Fenster funktioniert das Skript nur, weil ich "terminal" Festplattenvollzugriff gegeben habe.


Leider habe ich noch keine sinnvolle Möglichkeit gefunden, mit LaunchDeamons zuverlässig Aktionen beim User-Logout auszuführen. Daher scheidet dieser "moderne" Ansatz aus. (bei crontab hätte ich ähnliche Probleme)


Fazit: Wir verschieben unsere Dateien jetzt in andere Verzeichnisse, welche von Apple nicht so verrammelt sind und fahren mit den alten Skripten weiter solange das geht.

04. Juni 2020 22:32 als Antwort auf Luckiye

Hallo Luckiye,

wegen Ferientage etwas später mein reply.

Mein zweiter Mac (mini) ist noch inaktiv - keine Testmöglichkeit.

Ich wollte Dir crontab empfehlen, dr.google hat :

https://alvinalexander.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs/

empfohlen.

als Beispiel aus meinem System:

Launch Agents:

[Running] com.malwarebytes.mbam.frontend.agent.plist

[Loaded] com.microsoft.update.agent.plist (Microsoft Corporation - installed 2020-04-22)

22. Mai 2020 04:04 als Antwort auf Biker17

Zuvor hatten wir einen Mac Mini und ein MacBook Air mit MacOS 10.13. Der Mac Mini wurde durch einen neueren mit MacOS 10.15.4 ersetzt, die Benutzerdaten vom alten migirert und das MacBook Air mit einem Update ebenfalls auf Version 10.15.4 migriert.

Die Scripte werden tatsächlich ausgeführt, das beweisen meine Log-Files -- die LoginHooks funktionieren also.

Bei beiden Rechnern tritt allerdings der gleiche rsync-Fehler auf, der eine vollständige Synchonisation verhindert.

Dieser Fehler tritt nicht auf, wenn das Script "von Hand" gestartet wird.

Auch ein Löschen aller Daten auf dem NAS und anschließend komplett neu Schreiben per rsync bringen keine Verbesserung.


27. Mai 2020 11:55 als Antwort auf Biker17

Hallo Jürgen,

LoginHooks sind bei MacOS Scripte, die bei einem User-login ausgeführt werden. Diese Scripte laufen unter dem user root und bekommen den Login-User als Argument übergeben. Mein Script wird definitiv ausgeführt -- also funktionieren die LoginHooks scheinbar weiterhin.

Ein Berechtigungs-Problem vermute ich auch -- nur weiss ich nicht wo der Unterschied zwischen der LoginHook- und der Terminal-Umgebung liegt.


Wenn ich das Script "von Hand" starte, dann mache ich das mit sudo -- also ebenfalls quasi als root.

Kann es sein, daß die User-IDs bei der Migration verändert wurden und dadurch Probleme mit rsync auftreten? Wie kann ich mir die User-ID anzeigen lassen?


Die Fehlermeldung ist nicht sehr ausführlich. Selbst mit der Option -vv gibt es nicht mehr als

IO error encountered -- skipping file deletion


Dieser Thread wurde vom System oder dem Community-Team geschlossen. Du kannst alle Beiträge positiv bewerten, die du hilfreich findest, oder in der Community nach weiteren Antworten suchen.

rsync script als loginhook -- IO error encountered

Willkommen in der Apple Support Community
Ein Forum, in dem Apple-Kunden sich gegenseitig mit ihren Produkten helfen. Melde dich mit deinem Apple Account an, um Mitglied zu werden.