Come eseguire un backup notturno su Snow Leopard Server tramite launchd

2

Ho provato a configurare un backup notturno sul mio Mac Mini server, e dopo un sacco di ricerche su googling e scavo e man-page, ho capito che launchd sembrava essere anche quello giusto, e ho provato creando il mio file plist. Ho trovato questo (memorizzato in /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>

Il problema è che non funziona. Posso caricarlo con launchctl , e appare su launchctl list con exit status 0. Ma se controllo i miei file di backup, non vengono aggiornati.

Qualche indizio su cosa sto facendo male (supponendo che il mio script di backup funzioni come dovrebbe)?

    
posta mikl 27.06.2011 - 23:09
fonte

2 risposte

4

Mi vengono in mente alcune cose:

  • Hai aspettato da un giorno all'altro di funzionare? launchctl load non lo farà finire fuori sequenza - se vuoi farlo girare in un momento diverso dalle 3:15, usa sudo launchctl start dk.revealit.NightlyRSyncBackup dopo averlo caricato.

  • Lo script run-rsync attiva tutti i processi in background o fa tutto in linea? Perché se lo script termina e ci sono ancora processi in background, launchd pensa che qualcosa sia andato storto e uccida i processi in background. Se non vuoi farlo, aggiungi <key>AbandonProcessGroup</key><true/> a .plist.

  • Lo script dipende da PATH comprese le directory non standard (ad es. / opt / local / bin o qualcosa del genere)?

Una tecnica di debug utile è aggiungere qualcosa come:

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

su .plist e guarda cosa viene mostrato in quei file.

    
risposta data 28.06.2011 - 03:43
fonte
2

Una volta risposto a un qst simile , quindi controlla prima questo:

da man lanuchctl

Note that per-user configuration files (LaunchAgents) must be owned by the user loading them. All system-wide daemons (LaunchDaemons) must be owned by root. Configuration files must not be group- or world-writable. These restrictions are in place for security reasons, as allowing writability to a launchd configuration file allows one to specify which executable will be launched.

Quindi, se la tua rsync dovrebbe essere fissata come root

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

e dopo questi:

launchctl load /Library/LaunchDaemons/your.plist
    
risposta data 28.06.2011 - 10:28
fonte

Leggi altre domande sui tag