Backuppc

De OpenWikiBSD.

Sommaire

Install

Debian

apt-get install backuppc

OpenBSD

pkg_add backuppc

FreeBSD

BackupPC

Mode packages

pkg_add -r backuppc rsync samba
echo 'backuppc_enable="YES"' >> /etc/rc.conf
chown backuppc:www /usr/local/etc/backuppc/config.pl
mkdir /var/log/BackupPC
chown -R backuppc:backuppc /var/log/BackupPC
mkdir -p /var/db/BackupPC/{pc,cpool}
chown -R backuppc:backuppc /var/db/BackupPC
mkdir /usr/local/etc/backuppc/pc
chown -R backuppc:backuppc /usr/local/etc/backuppc/pc/
cpan
  install Compress::Zlib
  install Archive::Zip
  install File::RsyncP
  quit
perl config.pl

Mode ports

cd /usr/ports/sysutils/backuppc
make install clean
cd /usr/ports/net/rsync
make install clean
echo 'backuppc_enable="YES"' >> /etc/rc.conf

 echo "host        dhcp    user    moreUsers     # <--- do not edit this line ">> /usr/local/etc/backuppc/hosts

Apache

Modifier /usr/local/etc/apache2/httpd.conf

User  backuppc
Group  backuppc

Partie SSL :

mkdir /usr/local/etc/apache22/ssl.crt
mkdir /usr/local/etc/apache22/ssl.key
chmod 0700 /usr/local/etc/apache22/ssl.key
chmod 0700 /usr/local/etc/apache22/ssl.crt
cd /root
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in /root/server.csr -signkey /root/server.key -out /root/server.crt
cp /root/server.key /usr/local/etc/apache22/ssl.key/
cp /root/server.crt /usr/local/etc/apache22/ssl.crt/
chmod 0400 /usr/local/etc/apache22/ssl.key/server.key
chmod 0400 /usr/local/etc/apache22/ssl.crt/server.crt

Décommenter la ligne Include etc/apache22/extra/httpd-ssl.conf dans /usr/local/etc/apache22/httpd.conf sur zfsguru ou /etc/apache22/httpd.conf

Ajouter

SSLCertificateFile "/usr/local/etc/apache22/ssl.crt/server.crt" SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/server.key" à /apache22/extra/httpd-ssl.conf

ou /usr/local/etc/apache22/extra/httpd-ssl.conf pour zfsguru

Serveur

  • Le fichier de configuration est config.pl
  • Le /var/lib/backuppc qui contient les sauvegardes peut migrer ailleurs, sur une partoche dédiée (chercher TopDir).
Sous FreeBSD : $Conf{TopDir}      = '/var/db/BackupPC';

En fait, il est déconseillé de faire cela; monter le FS cible sous TopDIr est préférable :

mkdir -p /var/db/BackupPC

Puis montez le FS : zroot/backup on /var/db/BackupPC :

 /usr/local/etc/rc.d/backuppc stop
 mv /var/db/BackupPC/* /zroot/backuppc/
 rmdir /var/db/BackupPC/
 ln -s  /zroot/backuppc/ /var/db/BackupPC
 /usr/local/etc/rc.d/backuppc start
echo "Alias /BackupPC/images /usr/local/www/backuppc
ScriptAlias /BackupPC /usr/local/www/cgi-bin/BackupPC_Admin
" >> /usr/local/etc/apache22/Includes/backuppc.conf

Dans /usr/local/etc/apache22/httpd.conf, modifiez la ligne correspondant aux autorisations :

 <Directory />
   AllowOverride None
   Order deny,allow
   Deny from all
 </Directory>

devient

<Directory />
   AllowOverride None
   Order deny,allow
   ##Deny from all
   Allow from all
</Directory>

Enfin, toujours dans httpd.conf, modifiez le docuemtn root :

###DocumentRoot "/usr/local/www/apache22/data" 
 DocumentRoot "/usr/local/www 

Le fichier spécifique à la machine est :

  • FreeBSD : /usr/local/etc/backuppc/pc/NOMDEMACHINE.pl
  • Debian : root@fermi:/var/lib/backuppc/pc/NOMDEMACHINE/config.pl
  • L'interfesse ouebe (http://SRV/backupppc) a un mdp apache que vous n'avez surement pas noté au départ..
htpasswd /etc/backuppc/htpasswd backuppc
  • Compression : $Conf{ArchiveComp} = 'gzip';

Vous pouvez changer l'algorithme et le niveau de compression.

Comme ZFS inclus ces fonctions au niveau filesystem, j'ai choisi de ne pas compresser deux fois, mais de tout laisser faire à ZFS.

$Conf{ArchiveComp} = 'none';


  • Interfesse en francais
$Conf{Language} = 'fr';
  • sauvegarde sur un lien WAN avec mauvais débit
$Conf{PingMaxMsec} = '60';
  • Email admin :

$Conf{EMailUserDestDomain} = 'EMAIL@MAIL';

Sécurisation des échanges : Rsync over SSH

  • Sur le serveur backuppc
  • Debian like
su backuppc
 ssh-keygen -t rsa -b 2048

  • FreeBSD
su -c backuppc -m backuppc
ssh-keygen -t rsa -b 2048
$Conf{RsyncClientCmd} = '$sshPath -q -x -l USER_DISTANT  $host $rsyncPath $argList+';
  • Sur le client à sauvegarder
su root
ssh-keygen -t rsa 

Copier, par un biais sécurisé, le /var/lib/backuppc/.ssh/id_rsa.pub du serveur backuppc vers le client de backup dans /root/.ssh/authorized_keys

sudo chown root.root /root/.ssh/authorized_keys
  • Vérifier que la cx se fait bien :
su backuppc
ssh -v root@client
  • Sur l'interface ouebe de backuppc :
    • Modifier la config
    • Xfer
    • Méthode rsync
    • Sauvegarder

Debug

Either these are different file systems, or this file

TRES important, je me suis fait avoir : backuppc refuse de sauvegarder sur plusieurs systèmes de fichiers différents.

Permissions

l'ensemble des sous-répertoires doit avoir backuppc comme proprio et comme groupe proprio

chown -R backupc.bacckuppc /var/lib/backuppc

(auth failed on module XXX)

Plusieurs possibilités :

  • Si vous sauvegardez avec rsyncd et avec l'utilisateur root.root (Dangereux mais utile pour ne rien rater), alors /etc/rsyncd.* doivent avoir comme

proprio root.root (Oui, oui, même sous Ubuntu ) :

sudo chown root.root /etc/rsyncd.*
  • Il faut avoir un user autorisé (auth users = XXXXX), avec XXXX défini dans le secret.

(auth required, but service XXX is open/insecure)

  • Il faut avoir un user autorisé (auth users = XXXXX), avec XXXX défini dans le secret.

'(unexpected response )

  • Vérifiez que rsync est installé et que le lien dans inetd.conf est bon pour le binaire..
  • Vérifiez que /etc/rsyncd.{conf,secret} sont installés.
  • Vérifiez que root.root sont bien les proprios des rsyncd.*
  • Attention, le fichier de config config.pl (global ou particulier) doit avoir backuppc.www-data comme proprio

'(chgdir failed)

  • Est-ce que tous les répertoires sauvegardés existent ???

(inet connect: Connection refused)

  • Il manque une ligne dans /etc/inetd.conf
rsync 		stream 	tcp 	nowait 	root 	/usr/bin/rsync rsyncd --daemon
  • OU bien vous n'avez pas relancé le démon :
kill -HUP pid

unable to read 4 bytes

  • Mauvais droits ou souci de clés SSH entre le client et le serveur. Pour valider, tenter la connexion depuis le serveur backuppc :
su backuppc
ssh -v root@client

Si vous avez un souci, inutile d'aller plus loin; c'est SSH pas rsync ou backuppc le pb.

No files dumped for share X$

  • Plutôt ardu à résoudre celui-là ! Lors de la sauvegarde d'une machine Windows.

En fait il faut modifier directement le config.pl original, car cela impactera toutes les sauvegardes de windowseries :

Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName'
         . ' $I_option -U $userName -E -N -d 1'
         . ' -c tarmode\\ full -Tc$X_option - $fileList';

Devient

Conf{SmbClientFullCmd} = '$smbClientPath \\\\$host\\$shareName'
         . ' $I_option -U $userName -E  -d 1'
         . ' -c tarmode\\ full -Tc$X_option - $fileList';

Il faut enlever le -N


session setup failed: NT_STATUS_LOGON_FAILURE

Pour tester

/usr/share/backuppc/bin/BackupPC_dump -v -f Client

Client

Linux

/etc/rsyncd.conf

        uid = root
        gid = root 
        use chroot =  no
        syslog facility = local5
        pid file = /var/run/rsyncd.pid
        secrets file = /etc/rsyncd.secret
        hosts allow = @IP du srv backup
        auth users = UserBackup
[etc]
        path = /etc
        comment = Conf
        read only = yes
[home]
        path = /home/phil
        comment = Dossier perso
       read only = yes
[script]
        path = /usr/script/
        comment = Les scripts
        read only = yes

/etc/rsyncd.secret

UserBackup:MdpUser
chmod 700 /etc/rsyncd.secret
chown root.root /etc/rsyncd.secret 

inetd.conf

apt-get install openbsd-inetd rsync
echo "
rsync 		stream 	tcp 	nowait 	root 	/usr/bin/rsync rsyncd --daemon
" >> /etc/inetd.conf

OpenBSD

/etc/rsyncd.conf

        uid = root
        gid = wheel
        use chroot =  no
        syslog facility = local5
        pid file = /var/run/rsyncd.pid
        secrets file = /etc/rsyncd.secret
        hosts allow = @IP du srv backup
        auth users = UserBackup
[etc]
        path = /etc
        comment = Conf
        read only = yes
[home]
        path = /home/phil
        comment = Dossier perso
       read only = yes
[script]
        path = /usr/script/
        comment = Les scripts
        read only = yes

/etc/rsyncd.secret

UserBackup:MdpUser
chmod 700 /etc/rsyncd.secret
chown root.wheel /etc/rsyncd.secret 

inetd.conf

pkg_add rsync
echo "
rsync 		stream 	tcp 	nowait 	root 	/usr/local/bin/rsync rsyncd --daemon
" >> /etc/inetd.conf

Solaris 11

Tiré D'ici.

/etc/rsyncd.conf

        uid = root
        gid = root 
        use chroot =  no
        syslog facility = local5
        pid file = /var/run/rsyncd.pid
        secrets file = /etc/rsyncd.secret
        hosts allow = @IP du srv backup
        auth users = UserBackup
[etc]
        path = /etc
        comment = Conf
        read only = yes
[home]
        path = /export/home
        comment = Dossier perso
       read only = yes
[script]
        path = /usr/script/
        comment = Les scripts
        read only = yes

/etc/rsyncd.secret

UserBackup:MdpUser
chmod 700 /etc/rsyncd.secret
chown root /etc/rsyncd.secret 

/etc/services

echo "rsync 873/tcp" >> /etc/services 


inetd.conf

echo "rsync 		stream 	tcp 	nowait 	root 	/usr/bin/rsync rsyncd --daemon" >> /etc/inetd.conf
svcadm restart svc:/network/inetd
inetconv 
  rsync -> /lib/svc/manifest/network/rsync-tcp.xml
  Importing rsync-tcp.xml ...svccfg: Restarting svc:/system/manifest-import
  The manifest being imported is from a standard location and should be imported with the  command : svcadm restart svc:/system/manifest-import
  Done



Windows

Méthode classique

  • Choisir méthode smb
  • Créer un user AD ayant le droit read-only sur chaque partage (clic droit/partage et sécurité/Ajouter lecture+parcours des répertoires)

Plutôt compliqué à utiliser contrairement aux apparences; toujours des erreurs en cascade.

Méthode Unixienne : CygWin

  • Sur le serveur Windows, télécharger l'installeur Cygwin
  • Choisir les paquets Admin,Archive,Base,Doc,Editors,Net
  • Lancer l'installation qui va télécharger le nécessaire
ssh-host-config -y
cygrunsrv -S sshd
Outils personnels