Mac OS X : installation de BackupPC

Boris HUISGEN April 18, 2009

administration mac os x backuppc macports

J’ai installé le système de backup BackupPC sur mon Mac Mini, afin de sauvegarder facilement des serveurs distants.

Voici la procédure complète d’installation sous Mac OS X, avec serveur Web Nginx en FastCGI/Perl. En fin d’article, je vous fais part d’une idée de configuration possible pour le stockage sur un disque dur externe.

Pour l’installation, je vous renvoie en premier lieu à mes articles précédents :

Les modules Perl Compress::zlib et File::RsyncP sont à installer, comme toujours par MacPorts :

    $ sudo port install p5-compress-zlib
    $ sudo port install p5-file-rsyncp

Au niveau des scripts de démarrage de BackupPC, pkill et cie sera nécessaire :

    $ sudo port install proctools

Je vais effectuer l’installation de BackupPC dans /opt/local pour rester dans l’esprit MacPorts :

    $ cd /opt/local/src
    $ tar xzf BackupPC.tar.gz
    $ sudo perl configure.pl
    
    --> Full path to existing main config.pl []?
    --> Are these paths correct? [y]?
    --> BackupPC will run on host [bhuisgen.local]?
    --> Install directory (full path) [/usr/local/BackupPC]? /opt/local/share/backuppc
    --> Data directory (full path) [/data/BackupPC]? /Volumes/WORK/backup/backuppc
    --> Compression level [3]?
    --> Apache image directory (full path) []? /opt/local/www/backuppc/images
    --> URL for image directory (omit http://host; starts with '/') []? /backuppc/images
    --> CGI bin directory (full path) []? /opt/local/www/backuppc

L’installation effectue la copie des fichiers de configuration dans /etc. Cà ne me va pas du tout et les majuscules dans les répertoires je déteste ; donc fix direct :

    $ sudo mv BackupPC/ /opt/local/etc/backuppc
    $ sudo mv /var/log/BackupPC/ /opt/local/var/log/backuppc
    $ sudo chown root:admin /opt/local/etc/backuppc
    $ sudo chown root:admin /opt/local/var/log/backuppc/

Il faut ensuite modifier le fichier /opt/local/share/backuppc/lib/BackupPC/Lib.pm pour lui préciser les répertoires /opt/local/etc/backuppc et /opt/local/var/log/backuppc car les répertoires sont codés en dur (pas bien bouh) :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
    --- Lib.pm.old  2009-04-10 00:56:46.000000000 +0200
    +++ Lib.pm      2009-04-10 00:57:33.000000000 +0200
    @@ -128,8 +128,8 @@
                 useFHS     => $useFHS,
                 TopDir     => $topDir,
                 InstallDir => $installDir,
    -            ConfDir    => $confDir eq "" ? '/etc/BackupPC' : $confDir,
    -            LogDir     => '/var/log/BackupPC',
    +            ConfDir    => $confDir eq "" ? '/opt/local/etc/backuppc' : $confDir,
    +            LogDir     => '/opt/local/var/log/backuppc',

Dans le fichier principal de configuration /opt/local/etc/backuppc/config.pl, il faut également modifier les répertoires :

    $Conf{TopDir}      = '/Volumes/WORK/backup/backuppc';
    $Conf{ConfDir}     = '/opt/local/etc/backuppc';
    $Conf{LogDir}      = '/opt/local/var/log/backuppc';
    $Conf{InstallDir}  = '/opt/local/share/backuppc';
    $Conf{CgiDir}      = '/opt/local/www/backuppc';

Vérifiez également que root est bien l’utilisateur exécutant le démon BackupPC :

    $Conf{BackupPCUser} = 'root';

Remarque : vous pouvez autrement laisser l’utilisateur backuppc, mais il faut le créer et modifier en conséquence le script de démarrage du démon (sans compter la partie CGI).

Ensuite, j’autorise par défaut tous les droits d’administration :

    $Conf{CgiAdminUserGroup} = '';
    $Conf{CgiAdminUsers}     = '*';

La configuration est à présent terminée. A présent un petit lien symbolique qui simplifie l’accès web :

    $ cd /opt/local/www/backuppc
    $ sudo ln -s ./BackupPC_Admin index.cgi

Il reste à créer le script de démarrage de BackupPC. J’ai donc fait un wrapper :

    $ cd /opt/local/etc/LaunchDaemons/fr.hbis.backuppc
    $ vim backuppc.wrapper
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
    #!/bin/sh
    #
    # daemondo support script for BackupPC
    #
    # Boris HUISGEN <bhuisgen@hbis.fr>
    #
    
    # backuppc directory, needed to pkill
    BACKUPPC_DIR="/opt/local/share/backuppc/"
    # command to start daemon
    CMD="/opt/local/bin/perl /opt/local/share/backuppc/bin/BackupPC"
    
    #
    # Init
    #
    prefix=/opt/local
    
    #
    # Start
    #
    
    Start()
    {
     $CMD
    }
    
    #
    # Stop
    #
    
    Stop()
    {
     pkill -f $BACKUPPC_DIR
    }
    
    #
    # Restart
    #
    
    Restart()
    {
     Stop
     Start
    }
    
    #
    # Run
    #
    
    Run()
    {
     case $1 in
     start  ) Start   ;;
     stop   ) Stop    ;;
     restart) Restart ;;
     *      ) echo "$0: unknown argument: $1";;
     esac
    }
    
    #
    # Run a phase based on the selector
    #
    Run $1

Et un script launchd s’appuyant sur daemondo de MacPorts :

    $ vim fr.hbis.backuppc.plist
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    <?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>Debug</key>
       <false/>
       <key>Label</key>
       <string>fr.hbis.backuppc</string>
       <key>OnDemand</key>
       <false/>
       <key>ProgramArguments</key>
       <array>
          <string>/opt/local/bin/daemondo</string>
          <string>--label=backuppc</string>
          <string>--start-cmd</string>
          <string>/opt/local/etc/LaunchDaemons/org.macports.backuppc/backuppc.wrapper</string>
          <string>start</string>
          <string>;</string>
          <string>--stop-cmd</string>
          <string>/opt/local/etc/LaunchDaemons/org.macports.backuppc/backuppc.wrapper</string>
          <string>stop</string>
          <string>;</string>
          <string>--restart-cmd</string>
          <string>/opt/local/etc/LaunchDaemons/orgs.macports.backuppc/backuppc.wrapper</string>
          <string>restart</string>
          <string>;</string>
          <string>--pid=none</string>
       </array>
       <key>RunAtLoad</key>
       <false/>
    </dict>
    </plist>

On référence le script pour démarrer BackupPC :

    $ sudo launchctl load -w fr.hbis.backuppc.plist

Si tout est OK, http://localhost/backuppc/ doit vous afficher l’interface de gestion de BackupPC. Il vous reste à configurer les serveurs à sauvegarder, partie hosts. Le reste peut se faire avec la documentation accessible depuis l’interface.

See also

Mac OS X : installation de Nginx / PHP / MySQL
Read more
Git : package binaire pour Mac OS X
Read more
Firebird : script de désinstallation pour Mac OS X
Read more