2 votos

Cómo ejecutar un programa nocturno de trabajo de copia de seguridad en Snow Leopard Server a través de launchd

He estado tratando de configurar una noche de trabajo de copia de seguridad en mi Mac Mini server, y después de mucho Googlear y la excavación y el hombre de la página de ing, me di cuenta de que launchd parecía ser la correcta, y trató de establecer mi propio plist fil. Me he encontrado con esto (almacenado en /Library/LaunchDaemons/dk.revealit.NightlyRSyncBackup.plist):

<?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>dk.revealit.NightlyRSyncBackup</string>
        <key>ProgramArguments</key>
        <array>
                <string>/var/root/run-rsync</string>
        </array>
        <key>LowPriorityIO</key>
        <true/>
        <key>Nice</key>
        <integer>1</integer>
        <key>WorkingDirectory</key>
        <string>/var/root</string>
        <key>RunAtLoad</key>
        <false/>
        <key>StartCalendarInterval</key>
        <dict>
                <key>Hour</key>
                <integer>3</integer>
                <key>Minute</key>
                <integer>15</integer>
        </dict>
</dict>
</plist>

Problema es que no funciona. Puedo cargar con launchctl, y aparece en launchctl list con estado de salida 0. Pero si reviso mis archivos de copia de seguridad, no se actualizan.

Alguna pista en cuanto a lo que estoy haciendo mal (suponiendo que mi script de copia de seguridad funciona como debería)?

4voto

Nate Puntos 220

Varias cosas vienen a la mente:

  • ¿Esperar toda la noche para que se ejecute? launchctl load no hará que se ejecute fuera de la secuencia, si quieren hacer que se ejecute en algún momento distinto de las 3:15 am, uso sudo launchctl start dk.revealit.NightlyRSyncBackup después de que se carga.

  • ¿La ejecución de rsync secuencia de comandos de fuego fuera de cualquier proceso en segundo plano, o no hacer todo en línea? Porque si la secuencia de comandos de salidas y hay procesos en segundo plano que sigue pasando, launchd piensa que algo ha ido mal y mata a los procesos de fondo. Si usted no quiere hacer esto, añada <key>AbandonProcessGroup</key><true/> a el .plist.

  • ¿El script depende de la RUTA, incluyendo cualquier anormales de directorios (por ejemplo, /opt/local/bin o algo así)?

Una útil técnica de depuración es agregar algo como:

<key>StandardOutPath</key>
<string>/var/root/NightlyRSyncBackup.out</string>
<key>StandardErrorPath</key>
<string>/var/root/NightlyRSyncBackup.err</string>

a la .plist y ver lo que se muestra en los archivos.

2voto

jm666 Puntos 4489

Una vez que respondió a una similar de qst, a fin de comprobar esto primero:

de la man lanuchctl

Tenga en cuenta que por archivos de configuración de usuario (LaunchAgents) debe ser de propiedad de la el usuario carga. Todos los de todo el sistema demonios (LaunchDaemons) debe ser de propiedad por root. Los archivos de configuración no debe grupo - o del mundo-escritura.Estos las restricciones están en su lugar para la seguridad razones, como permitir que writability a un launchd archivo de configuración permite una para especificar qué archivo ejecutable será lanzado.

Por lo tanto, si el rsync debe miró como root

chown root  /Library/LaunchDaemons/your.plist 
chgrp wheel /Library/LaunchDaemons/your.plist 
chmod 644   /Library/LaunchDaemons/your.plist

y después de estos:

launchctl load /Library/LaunchDaemons/your.plist

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