Cómo ejecutar una tarea de copia de seguridad nocturna en el servidor Snow Leopard mediante launchd

2

He intentado configurar un trabajo de copia de seguridad nocturno en mi servidor Mac Mini, y después de muchas búsquedas en Google, de excavar y de manual, descubrí que launchd también parecía ser el correcto, y probé la creación de mi propio archivo plist He encontrado 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>

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

¿Alguna pista sobre lo que estoy haciendo mal (asumiendo que mi script de copia de seguridad funciona como debería)?

    
pregunta mikl 27.06.2011 - 23:09

2 respuestas

4

Vienen a la mente varias cosas:

  • ¿Esperó durante la noche a que se ejecute? launchctl load no hará que se agote la secuencia; si desea que se ejecute en algún momento distinto a las 3:15 am, use sudo launchctl start dk.revealit.NightlyRSyncBackup después de que se haya cargado.

  • ¿El script run-rsync desencadena procesos en segundo plano, o hace todo en línea? Porque si el script se cierra y todavía hay procesos en segundo plano, launchd piensa que algo salió mal y mata los procesos en segundo plano. Si no quieres que haga esto, agrega <key>AbandonProcessGroup</key><true/> a la lista.

  • ¿La secuencia de comandos depende de PATH que incluya directorios no estándar (por ejemplo, / opt / local / bin o algo así)?

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

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

para ver la lista y ver lo que aparece en esos archivos.

    
respondido por el Gordon Davisson 28.06.2011 - 03:43
2

Una vez contestada un cuestionario similar , así que revisa esto primero:

desde el man lanuchctl

  

Tenga en cuenta que los archivos de configuración por usuario   (LaunchAgents) debe ser propiedad de la   Usuario que los carga. Todo el sistema   Los demonios (LaunchDaemons) deben ser propiedad   por la raíz. Los archivos de configuración no deben   ser de grupo o de escritura mundial. Estos   existen restricciones para la seguridad   razones, como permitir la escritura a un   El archivo de configuración de Launchd permite   para especificar qué ejecutable será   lanzado.

Por lo tanto, si su rsync debería ser iniciado 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
    
respondido por el jm666 28.06.2011 - 10:28

Lea otras preguntas en las etiquetas