====== Bacula et dépendances ====== ===== backports ===== On va installer la version 5 qui est sur le "backports". ===== mail ===== # aptitude install exim4 ===== mysql ===== # aptitude install mysql-server ===== director ===== # aptitude -t lenny-backports install bacula-director-mysql ===== console ===== # aptitude -t lenny-backports bacula-console ===== sd et fd ===== # aptitude -t lenny-backports install bacula-fd bacula-sd-mysql ====== Bacula ====== ===== ipv4 ===== Si on "blacklist ipv6" , alors "bacula" doit être forcé afin de ne fonctionner qu'en ipv4... sinon, les communications echouent silencieusement (les jobs ne se terminent jamais). Exemple de conf, pour "bacula-dir.conf" : # TJ --------- #DirAddress = 127.0.0.1 #DIRport = 9101 # where we listen for UA connections DirAddresses = { ipv4 = { addr = 0.0.0.0; } } Adapter pour chaque daemon. ===== compiler bacula-sd ===== Dans la version 5.0.2 de bacula-sd, il y a un bug genant: il ne peut pas executer plusieurs "job" sur un "device"... grrrr Donc, on doit "installer" la version 5.0.3 ... et voila comment j'ai fait. Sur Debian Lenny/Squeeze 64 bit: Télécharger les sources "bacula-5.0.3.tar.gz" par là: http://www.bacula.org/en/?page=downloads Déposer l'archive dans **''/usr/local/src''** ... $ cd /usr/local/src ... $ tar xvzf bacula-5.0.3.tar.gz $ cd bacula-5.0.3 Pré-requis qui m'ont été nécessaire: # aptitude install gcc make g++ # aptitude -t testing install libsqlite3-dev On va compiler en "static" avec "sqlite": mais on ne s'interesse vraiment qu'a **''bacula-sd''** , et pas aux autres... $ ./configure --with-sqlite3 --enable-build-dird=no --enable-static --disable-libtool CFLAGS="-O2" CXXFLAGS="-O2" $ make Mais on n'installe pas!!! Ce qui nous interesse est simplement là: /usr/local/src/bacula-5.0.3/src/stored/bacula-sd $ su # /etc/init.d/bacula-sd stop # mv /usr/sbin/bacula-sd /usr/sbin/DPKG-bacula-sd # ln -s /usr/local/src/bacula-5.0.3/src/stored/bacula-sd /usr/sbin/. # /etc/init.d/bacula-sd start Et voila. Le risque, c'est qu'au prochain upgrade, on est besoin de recréer le lien symbolique, a moins que le bug soit corrigé! === Oups === Pour "Ubuntu 6.06.2 LTS", j'ai ça: ... Compiling bscan.c make[1]: *** No rule to make target `../cats/libbacsql.a', needed by `bscan'. Stop. make[1]: Leaving directory `/home/thierry/tmp/bacula-5.0.3/src/stored' ... Que faire ? Je renonce a "sqlite" et remplace par "mysql", avec en passant: # aptitude install libmysqlclient15-dev Note: "bacula-sd" n'a pas besoin de base de données... donc, je m'en fous. ====== Webacula ====== Lien: http://webacula.sourceforge.net/ ===== installation ====== ==== apache ==== # aptitude install apache2 libapache2-mod-php5 php5-mysql # aptitude install php5-gd | :!: ne pas oublier "php5-mysql" ! | # a2enmod rewrite # /etc/init.d/apache2 restart ==== download ==== $ cd /usr/local/src $ wget .... webacula-5.0.2.tar.gz $ tar xvzf .... etc... ==== Zend Framework ==== $ wget .... ZendFramework-1.10.8-minimal.tar.gz Dans **''/etc/php5/apache2/php.ini''** , ajouter au parametre **''include_path''** : ; TJ ; ------------------ include_path = "/usr/local/src/ZendFramework/library" ; ------------------ Ou bien: # cd /var/www/webacula/library # ln -s /usr/local/src/ZendFramework/library/Zend . # /etc/init.d/apache2 restart ==== webacula ==== FIXME : copier dans /var/www/webacula === bconsole === # adduser www-data bacula Test: # su -l www-data -s /bin/sh -c "/usr/bin/bconsole -n -c /etc/bacula/bconsole.conf" === www === Dans **''/etc/apache2/sites-available''**, creer le fichier **''200-webacula''** contenant: Alias "/webacula" "/var/www/webacula/html" RewriteEngine on Options FollowSymLinks AllowOverride All Order deny,allow Allow from 127.0.0.1 # your network Allow from 192.168.1.0/255.255.255.0 AuthType Basic AuthName "Webacula" #AuthUserFile /etc/apache2/conf.d/webacula.users AuthUserFile /var/www/webacula/passwd/.webacula.users # a creer! Require valid-user Activer: # a2ensite 200-webacula Modifier **''/etc/php5/apache2/php.ini''** pour avoir: max_execution_time = 600 memory_limit = 256M # apache2ctl graceful FIXME: modifier conf de **''bacula-dir.conf''** ??? Dans **''/var/www/webacula/html/.htaccess''** , faire en sorte d'avoir (?) : SetEnv APPLICATION_ENV production Dans le fichier **''/var/www/webacula/application/config.ini''** modifier pour avoir: ... db.config.username = webacula db.config.password = ... bacula.sudo = "" bacula.bconsole = "/usr/bin/bconsole" ... === MySQL === Dans **''../install''** , modifier avec le fichier **''webacula_mysql_create_database.sh''** avec les parametres de son choix. Par exemple: ... db_user="webacula" db_password="" ... Et puis: # ./webacula_mysql_create_database.sh -u root -p Enter password: Creation of webacula database succeeded. Et aussi: # ./webacula_mysql_make_tables.sh -u root -p Enter password: Creation of webacula MySQL tables succeeded. Completer afin que ce compte puisse aussi modifier le "catalog" bacula ( FIXME: lire ne suffit pas ? ) : mysql> GRANT ALL ON bacula.* TO webacula@localhost; Query OK, 0 rows affected (0.00 sec) === www passwd === Creer le fichier de mots de passe: # mkdir passwd # cd passwd # htpasswd -c .webacula.users Webacula Fournir le mot de passe pour le compte **''Webacula''** (Ne pas utiliser "-c", pour creer d'autres comptes!) FIXME : d'aprés la doc, y a des CRON a installer ===== En marche ===== C'est mieux que rien. ====== DataBase ====== ===== MySQL ===== Lien: http://wiki.bacula.org/doku.php?id=faq#restore_takes_a_long_time_to_retrieve_sql_results_from_mysql_catalog C'est extremement lent. Il faut peut envisager autre chose que MySQL !? ==== tmpfs ==== | :!: En fait, le changement est *insignifiant* avec MySQL ! Donc, ne pas faire ça pour ça ! | Lien: http://www.system-linux.eu/index.php?post/2009/09/10/cr%C3%A9er-un-tmpfs%2C-un-repertoire-dans-votre-ram J'ai mounter un fichier "tmp" pour "mysql" comme ça: # mkdir /mnt/mysql-tmp # chmod 0777 /mnt/mysql-tmp Dans fstab: tmpfs /mnt/mysql-tmp tmpfs defaults,size=512M 0 0 Et puis: # mount -a ==== my.cnf ==== Tweaks des options de MySQL ? dans my.cnf ? $ dpkg -S my-huge.cnf Ce que j'ai fait: ... tmpdir = /mnt/mysql-tmp # <--- seulement si on utilise "tmpfs" ... skip-locking key_buffer = 384M max_allowed_packet = 1M table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 ... [isamchk] key_buffer = 256M sort_buffer_size = 256M read_buffer = 2M write_buffer = 2M ... ==== Index ==== Lien: http://www.bacula.org/5.0.x-manuals/en/main/main/Catalog_Maintenance.html#SECTION004592000000000000000 Ce qui a fonctionné pour moi: $ mysql -u root -p mysql> use bacula; Examinons avec: mysql> show index from File; Mais j'y comprend que dalle en fait, et donc je fais : mysql> CREATE INDEX file_jobid_idx on File (JobId); mysql> CREATE INDEX file_jpf_idx on File (JobId, FilenameId, PathId); Les perfs sont booooooostés. Je peus enfin restaurer des fichiers d'une grosse base. ==== Shrink ==== Lien: http://www.mail-archive.com/bacula-users@lists.sourceforge.net/msg11973.html Il faut que j'essaye... # /etc/bacula/scripts/make_catalog_backup --user= --password= DROP de la database # mysql --user= --password= < bacula.sql ==== Compression ==== Lien: http://edin.no-ip.com/content/bacula-backup-with-gzip-compress-on ... Software Compression: 53.9 % ... ====== TLS ====== | :!: ** CA NE MARCHE PAS ** WORK IN PROGRESS | Liens: *http://www.bacula.org/5.0.x-manuals/en/main/main/Bacula_TLS_Communications.html *http://www.opendoc.net/comment-sauvegarder-avec-bacula *tinyca: http://tinyca.sm-zone.net/ ===== easy-rsa ===== ==== package ==== On va recupere "easy-rsa" dans le package "openvpn". On est dans le cas où l'on n'installera pas le package "openvpn", on veut juste "easy-rsa" : $ dpkg --print-architecture amd64 Je suis dans un DomU 64bit, donc, on recupère le package "openvpn" qui va bien. $ cd ~/tmp $ mkdir openvpn $ cd openvpn $ wget http://ftp.fr.debian.org/debian/pool/main/o/openvpn/openvpn_2.1~rc11-1_amd64.deb $ dpkg -x openvpn_2.1~rc11-1_amd64.deb ./ ==== install ==== "easy-rsa" est dans **''usr/share/doc/openvpn/examples/easy-rsa/2.0/''** . Donc: $ su # mkdir /etc/bacula/easy-rsa # cp -Rp usr/share/doc/openvpn/examples/easy-rsa/2.0/. /etc/bacula/easy-rsa # cd /etc/bacula/easy-rsa/ # chown -R root: * ==== vars ==== Modifier "vars" car par defaut il contient: # cat vars | grep -v "^#" | grep -v "^$" export EASY_RSA="`pwd`" export OPENSSL="openssl" export PKCS11TOOL="pkcs11-tool" export GREP="grep" export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA` export KEY_DIR="$EASY_RSA/keys" echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR export PKCS11_MODULE_PATH="dummy" export PKCS11_PIN="dummy" export KEY_SIZE=1024 export CA_EXPIRE=3650 export KEY_EXPIRE=3650 export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" Il me semble judicieux d'adapter au moins: KEY_COUNTRY KEY_PROVINCE KEY_CITY KEY_ORG KEY_EMAIL ... et peut etre: KEY_SIZE CA_EXPIRE KEY_EXPIRE ==== LA PREMIERE FOIS SEULEMENT ==== === clean-all === Faire: # . ./vars # ./clean-all # ./build-ca car : -le repertoire "./keys" va etre totalement effacé ! et c'est la que seront les futures codes!!! -le "ca" va être créé Un répertoire "./keys" est maintenant peuplé... Important: Common Name : Bacula CA === Generate Diffie Hellman parameters === # ./build-dh === server === Aussi la premiere fois, il faut dire qui est le maitre des clés (en quelques sortes): ./build-key-server bacula-server Common Name : my-bacula-server.fqdn En "CN", le nom fqdn. svp. === droits === Faire en sorte que "bacula" est accès aux fichiers dans "keys" (pas forcément a tous). Donc: # cd /etc/bacula # chown -R :bacula easy-rsa # cd easy-rsa # chmod g+rxs keys Afin d'autoriser "bacula" a lire dans le repertoire "keys" et a creer ulterieurement les fichiers avec le groupe "bacula" qui va bien. ==== clients ==== # . ./vars # ./build-key tj-debcave Et CN = tj-debcave On se demerde pour envoyer les fichiers suivant: .../keys/ca.crt .../keys/tj-debcave.crt .../keys/tj-debcave.key ... a la machine "tj-debcave". ==== revoke ==== # . ./vars # ./revoke-full tj-debcave ... ... error 23 at 0 depth lookup:certificate revoked La dernière ligne indique simplement que le certificat génère bien une erreur, maintenant qu'il est "revoké". Mais en pratique, avec Bacula, ca ne fonctionne pas. C'est avec "openvpn" que ca fonctionne en combinaison avec : "crl-verify ..." Lien: http://openvpn.net/index.php/open-source/documentation/howto.html#revoke ==== bacula-console ==== === serveur === Sur le serveur, dans **''bacula-dir.conf''** : ... ... Director { # define myself ... ... # -- TLS -- TLS Enable = yes TLS Require = no TLS CA Certificate File = /etc/bacula/easy-rsa/keys/ca.crt TLS Certificate = /etc/bacula/easy-rsa/keys/bacula.crt TLS Key = /etc/bacula/easy-rsa/keys/bacula.key # ------------ } ... ... :!: "TLS Require = no" afin de toléré l'absence de chiffrement... notamment a cause de "webacula" === un client === Dans **''bconsole.conf''** : ... ... Director { ... ... address = bacula.fqdn ... ... # ---------- TLS Enable = yes TLS Require = yes TLS CA Certificate File = /etc/bacula/keys/ca.crt TLS Certificate = /etc/bacula/keys/tj-debcave.crt TLS Key = /etc/bacula/keys/tj-debcave.key # ---------- } ... ... :!: dans "address", mettre l'adresse FQDN et non pas l'IP !!! ... sinon ca marche po et faire gaffe aux droits d'accès aux fichiers.