1 votes

Erreurs rsync, mais uniquement lorsqu'elles sont exécutées dans launchd

J'ai un script qui exécute rsync sur mon dossier ~/Library/Preferences/ :

#!/bin/zsh -f

SOURCE="$HOME/Library/Preferences"

TARGET="$HOME/Dropbox/Backups/Preferences/$HOST"

LOG="$HOME/logs/$HOST/${NAME}.log"

[[ ! -d "$LOG:h" ]] && mkdir -p "$LOG:h"

[[ ! -e "$LOG" ]] && touch "$LOG"

/usr/bin/rsync \
    --8-bit-output \
    --human-readable \
    --itemize-changes \
    --progress \
    --safe-links \
    --links \
    --times \
    --delete \
    --recursive \
    --checksum \
    --verbose \
    --exclude='.DS_Store' \
    --log-file="$LOG" \
    "${SOURCE}/" \
    "${TARGET}/"

exit 0
#EOF

Ce script fonctionne sans erreur depuis iTerm.

Cependant, lorsque j'essaie de l'exécuter via launchd, j'obtiens systématiquement des erreurs concernant 3 fichiers :

  1. com.apple.homed.notbackedup.plist
  2. com.apple.homed.plist
  3. com.apple.mail-shared.plist

Voici un exemple :

construction de la liste des fichiers ...
511 fichiers à considérer
*suppression com.contextsformac.Contexts.plist.JkbicFf
.d..t.... ./
rsync: send_files a échoué pour ouvrir "/Users/luomat/Library/Preferences/com.apple.homed.notbackedup.plist" : Opération non permise (1)
rsync: send_files a échoué pour ouvrir "/Users/luomat/Library/Preferences/com.apple.homed.plist" : Opération non permise (1)
rsync: send_files a échoué pour ouvrir "/Users/luomat/Library/Preferences/com.apple.mail-shared.plist" : Opération non permise (1)
>fc.t.... com.contextsformac.Contexts.plist
       3.10K 100%    0.00kB/s    0:00:00 (xfer#4, to-check=249/511)
.f..t.... com.setapp.DesktopClient.plist
>fcst.... test-ignore.txt
         203 100%  198.24kB/s    0:00:00 (xfer#5, to-check=75/511)

envoyé 31.63K octets  reçu 142 octets  63.55K octets/sec
taille totale est de 3.42M  le gain est de 107.49
erreur rsync : certains fichiers n'ont pas pu être transférés (code 23) à /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.200.1/rsync/main.c(996) [sender=2.6.9]

Je suppose que cela a quelque chose à voir avec la sécurité de Mojave car j'ai accès aux fichiers :

$ ls -l com.apple.homed.* com.apple.mail-shared.plist
-rw------- 1 luomat staff 184 Sep 12 00:43 com.apple.homed.notbackedup.plist
-rw------- 1 luomat staff 567 Sep 13 09:53 com.apple.homed.plist
-rw------- 1 luomat staff 225 Aug 18 23:44 com.apple.mail-shared.plist

Ce que j'ai essayé

  1. J'ai donné à /usr/bin/rsync "Accès complet au disque" dans les Préférences Système
  2. J'ai essayé rsync depuis homebrew /usr/local/bin/rsync et lui ai donné "Accès complet au disque"
  3. J'ai donné à /sbin/launchd "Accès complet au disque"

Maintenant quoi ?

Étant donné qu'il ne génère aucune erreur lorsqu'il n'est pas dans launchd, que devrais-je essayer maintenant ?

1voto

Kerry Jones Points 145

Vous courez dans des contextes différents lorsque vous utilisez launchd et iTerm2. Avec iTerm2, votre profil est exécuté, mais votre profil n'est pas exécuté lorsque vous utilisez launchd.

Certains programmeurs invoquent leur profil à partir de leur script launchd. Je fais en sorte que tout fonctionne sans avoir besoin d'exécuter mon profil.

Je vous suggère de vous rendre dans le répertoire dans lequel vous vous trouvez actuellement dans iTerm2.

J'ai écrit une petite fonction pour afficher tous mes paramètres de terminal. Exécutez ceci dans iTerm2 et launchd tout en envoyant la sortie vers un fichier et comparez.

settings () 
{ 
    ( echo "---------- env ----------";
    env;
    echo "--------- set ----------";
    set;
    echo "--------- export ----------";
    export;
    echo "--------- export -f ----------";
    export -f;
    echo "--------- alias ----------";
    alias;
    echo "--------- set -o ----------";
    set -o;
    echo "--------- shopt ----------";
    shopt;
    echo "--------- enable -a ----------";
    enable -a ) | less
}

Pour le terminal, vous pouvez copier et coller les paramètres dans le terminal.

settings >>/Users/mac/xset
cat xset

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X