1 votos

¿Lanzamiento de agentes zip/tar no funciona en plist?

He creado el plist para un agente de copia de seguridad "personalizado" (a través de LaunchAgent). El programa (zip) se llama, pero sigo recibiendo un 'error de zip: Nothing to do!' en mis registros.

Supongo que tiene que ver con los permisos. He añadido sh y zip a mi Full Disk Access la configuración de seguridad. Pero no sirvió de nada.

En una nota lateral, cuando muevo el comando zip en un shell (sh) script, funciona.

Me gustaría saber por qué usar el zip ¿el comando directamente no lo hace?

La ejecución del comando para la terminal también funciona sin problemas, así:

/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

Desde 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!

Por lo tanto, es necesario utilizar

    <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>    

Sin embargo, no funcionará porque launchd no expande los comodines y zip tampoco lo hace. Es más fácil de usar launchd para iniciar un shell script que hace todo el trabajo entonces.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X