1 votes

LaunchAgents zip/tar ne fonctionne pas dans le plist ?

J'ai créé le plist pour un agent de sauvegarde "personnalisé" (via LaunchAgent). Le programme (zip) est appelé, mais je continue à obtenir le message "zip error : Rien à faire !" dans mes journaux.

Je suppose que cela a quelque chose à voir avec les autorisations. J'ai ajouté sh y zip à mon Full Disk Access les paramètres de sécurité. Mais cela n'a pas aidé.

En passant, lorsque je déplace la commande zip dans un shell (sh) script, cela fonctionne.

J'aimerais savoir pourquoi l'utilisation du zip la commande directe ne le fait pas ?

L'exécution de la commande pour le terminal fonctionne également sans problème, comme suit :

/usr/bin/zip /Users/username/Backup/test.zip /Users/username/Documents/*.pdf

LaunchAgent script :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.myuser.DailyBackup</string>
    <key>Program</key>
    <string>/usr/bin/zip</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/username/Backup/test.zip</string>
        <string>/Users/username/Documents/*.pdf</string> 
    </array>    
    <key>StandardOutPath</key>
    <string>/tmp/my.backup.log</string>    
    <key>StandardErrorPath</key>
    <string>/tmp/my.backup.err</string>    
    <key>Debug</key>
    <true/>    
    <key>StartInterval</key>
    <integer>10</integer>
</dict>
</plist>

1voto

nohillside Points 82672

De man launchd.plist

ProgramArguments <array of strings>
This key maps to the second argument of execvp(3) and specifies the argument vector to be passed
to the job when a process is spawned. This key is required in the absence of the Program key.
IMPORTANT: Many people are confused by this key. Please read execvp(3) very carefully!

Vous devez donc utiliser

    <key>Program</key>
    <string>/usr/bin/zip</string>
    <key>ProgramArguments</key>
    <array>
        <string>zip</string>
        <string>/Users/username/Backup/test.zip</string>
        <string>/Users/username/Documents/*.pdf</string> 
    </array>    

Cela ne fonctionnera toujours pas, car launchd ne développe pas les caractères génériques et zip ne le fait pas non plus. C'est plus facile à utiliser launchd pour démarrer un shell script qui fait tout le travail ensuite.

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