Aller au contenu

Installation BackupPC Version 4.x

De TIC Enseignement Agricole BFC
Version datée du 1 février 2024 à 11:10 par Cv5lw (discussion | contributions) (1 version importée)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)


Site de référence


Installation BackupPC Version 4.x

Prérequis

Ces instructions ont été testées sur Ubuntu Xenial 16.04 LTS, Ubuntu Bionic 18.04 LTS, Ubuntu Focal 20.04 LTS et Debian 10 Buster.

Il n'y a aucun problème à utiliser la version graphique, mais pas de mode virtuel pour un backup !

Puis faire la mise a jour :

sudo apt-get update 
sudo apt-get upgrade

Installation

Créer le fichier backuppc-ubuntu-installer avec la commande nano puis faite un copier coller de la suite dedans.

Rq: Ou télécharger le script https://gitlab.molnix.com/molnix-open-source/backuppc-ubuntu-installer/-/raw/master/backuppc-ubuntu-installer

nano installbackuppc


#!/bin/bash
set -e

if [[ $1 == "install" || $1 == "upgrade" ]]; then
  ACTION=$1
elif [[ $1 == "" ]]; then
  ACTION=install
else
  echo "usage: $(basename $0) action [source]"
  echo "action is either install (default) or upgrade"
  echo "source is either tar (default) or git"
  exit 1
fi

if [[ $2 == "git" || $2 == "tar" ]]; then
  SOURCE=$2
elif [[ $2 == "" ]]; then
  SOURCE=tar
else
  echo "Unknown source $2!"
  exit 1
fi

# Install dependencies
apt-get -q update
apt-get -q -y upgrade
apt-get install -q -y apache2 apache2-utils libapache2-mod-perl2 par2 perl smbclient rsync tar gcc zlib1g zlib1g-dev rrdtool git make perl-doc libarchive-zip-perl libfile-listing-perl libxml-rss-perl libcgi-session-perl libacl1-dev curl pwgen

# Set password or read password file
if [[ -e /root/password ]]; then
  PASSWORD=$(cat /root/password)
else
  PASSWORD=$(pwgen -s -1 32)
fi
echo "$PASSWORD" > /root/password
chmod 600 /root/password

# Set up backuppc user and directory
adduser --system --home /var/lib/backuppc --group --disabled-password --shell /bin/false backuppc
echo "backuppc:$PASSWORD" | sudo chpasswd backuppc
mkdir -p /var/lib/backuppc/.ssh
chmod 700 /var/lib/backuppc/.ssh
echo -e "BatchMode yes\nStrictHostKeyChecking no" > /var/lib/backuppc/.ssh/config
if [[ ! -e /var/lib/backuppc/.ssh/id_rsa ]]; then
  ssh-keygen -q -t rsa -b 4096 -N '' -C "BackupPC key" -f /var/lib/backuppc/.ssh/id_rsa
fi
chmod 600 /var/lib/backuppc/.ssh/id_rsa
chmod 644 /var/lib/backuppc/.ssh/id_rsa.pub
chown -R backuppc:backuppc /var/lib/backuppc/.ssh

# Get BackupPC release versions
get_latest_release() {
  curl --silent "https://api.github.com/repos/$1/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/'                                
}
bpcver=$(get_latest_release "backuppc/backuppc")
bpcxsver=$(get_latest_release "backuppc/backuppc-xs")
rsyncbpcver=$(get_latest_release "backuppc/rsync-bpc")

mkdir -p /tmp/bpc
cd /tmp/bpc

if [[ $SOURCE == "tar" ]]; then
  # Fetch and install latest stable releases
  wget https://github.com/backuppc/backuppc-xs/releases/download/$bpcxsver/BackupPC-XS-$bpcxsver.tar.gz
  wget https://github.com/backuppc/rsync-bpc/releases/download/$rsyncbpcver/rsync-bpc-$rsyncbpcver.tar.gz
  wget https://github.com/backuppc/backuppc/releases/download/$bpcver/BackupPC-$bpcver.tar.gz
  tar -zxf BackupPC-XS-$bpcxsver.tar.gz
  tar -zxf rsync-bpc-$rsyncbpcver.tar.gz
  tar -zxf BackupPC-$bpcver.tar.gz
  cd BackupPC-XS-$bpcxsver
  perl Makefile.PL
  make
  make test
  make install
  cd ../rsync-bpc-$rsyncbpcver
  ./configure
  make
  make install
  cd ../BackupPC-$bpcver
fi

if [[ $SOURCE == "git" ]]; then
  # Fetch and install the latest development code instead
  git clone https://github.com/backuppc/backuppc.git
  git clone https://github.com/backuppc/backuppc-xs.git
  git clone https://github.com/backuppc/rsync-bpc.git
  cd backuppc-xs
  perl Makefile.PL
  make
  make test
  make install
  cd ../rsync-bpc
  ./configure
  make
  make install
  cd ../backuppc
  ./makeDist --nosyntaxCheck --releasedate "`date -u "+%d %b %Y"`" --version ${bpcver}git
  tar -zxf dist/BackupPC-${bpcver}git.tar.gz
  cd BackupPC-${bpcver}git
fi

if [[ $ACTION == "install" ]]; then
  ./configure.pl --batch --cgi-dir /var/www/cgi-bin/BackupPC --data-dir /var/lib/backuppc --hostname backuppc --html-dir /var/www/html/BackupPC --html-dir-url /BackupPC --install-dir /usr/local/BackupPC
fi

if [[ $ACTION == "upgrade" ]]; then
  ./configure.pl --batch --config-path /etc/BackupPC/config.pl
fi

# Set up web server
# Note that changing the apache user and group (/etc/apache2/envvars) could cause other services
# provided by apache to fail. There are alternatives if you don't want to change the apache
# user: use SCGI or a setuid BackupPC_Admin script - see the docs.
cp httpd/BackupPC.conf /etc/apache2/conf-available/backuppc.conf
sed -i "/Require local/d" /etc/apache2/conf-available/backuppc.conf
sed -i "s/export APACHE_RUN_USER=www-data/export APACHE_RUN_USER=backuppc/" /etc/apache2/envvars
sed -i "s/export APACHE_RUN_GROUP=www-data/export APACHE_RUN_GROUP=backuppc/" /etc/apache2/envvars
echo '<html><head><meta http-equiv="refresh" content="0; url=/BackupPC_Admin"></head></html>' > /var/www/html/index.html
a2enconf backuppc
a2enmod cgid
service apache2 restart

# Set up backuppc service
cp systemd/init.d/debian-backuppc /etc/init.d/backuppc
chmod 755 /etc/init.d/backuppc
update-rc.d backuppc defaults
chmod u-s /var/www/cgi-bin/BackupPC/BackupPC_Admin
touch /etc/BackupPC/BackupPC.users
sed -i "s/$Conf{CgiAdminUserGroup}.*/$Conf{CgiAdminUserGroup} = 'backuppc';/" /etc/BackupPC/config.pl
sed -i "s/$Conf{CgiAdminUsers}.*/$Conf{CgiAdminUsers} = 'backuppc';/" /etc/BackupPC/config.pl
chown -R backuppc:backuppc /etc/BackupPC
echo $PASSWORD | htpasswd -i /etc/BackupPC/BackupPC.users backuppc
service backuppc start

# Clean up
cd
rm -rf /tmp/bpc
echo "All done!"
exit 0

Ensuite exécuter le script en mode root en utilisant par exemple la commande suivante:

chmod -R 755 installbackuppc && sudo ./installbackuppc

Changement du mot de passe utilisateur backuppc

htpasswd /etc/BackupPC/BackupPC.users backuppc

Connexion à Backuppc

  • Dans un navigateur,lancer BackupPC avec http://localhost/BackupPC_Admin
  • Connectez-vous avec le login backuppc et le mot de passe généré à la fin du script

Configuration de Backuppc

Pour un partage sur un serveur Windows (SMB)

Création du "host" et choix des partages

Nous supposons que le serveur à sauvegarder est à pour ip fixe, 192.168.0.1. Pour le sauvegarder, nous utiliserons le protocole smb


Ajouter notre serveur dans la liste des ordinateurs à sauvegarder

* Allez dans Modifier les machines (dans la partie serveur) -> Machines
  • Cliquez sur Ajouter
  • Dans host, saisir l'adresse ip du serveur
  • Dans user, saisir backuppc
  • Cliquez ensuite sur Sauvegarder



Paramétrage de la sauvegarde du serveur

Choix des partages, dossiers à sauvegarder
  • Cliquez une fois sur État pour renouveler l'affichage
  • Dans la section Hôtes, cliquez dans le menu déroulant sur l'adresse ip du serveur (192.168.0.1)
  • Dans la section 192.168.0.1,Cliquez sur Modifier la configuration
  1. Cliquez sur Xfer
  2. Sélectionnez "smb" dans le menu déroulant
  3. nom du partage du client à sauvegarder
  4. administrateur ou domaine/user autorisé à accéder au partage
  5. "password"
Programmation horaire

Cliquez sur Horaire


  • FullPeriod : Temps minimum en jours entre deux sauvegardes complètes
  • IncrPeriod : Temps minimum en jours entre deux sauvegardes incrémentielles


*-1 indique pas de sauvegarde régulière sur cette machine. Seuls les sauvegardes manuelles (via l'interface web) serons prises en compte.

*-2 toutes les demandes de sauvegarde seront ignorées, y compris les demandes de sauvegarde manuelles.


  • FullKeepCnt: variable contenant le nombre de sauvegardes complètes à conserver
  • IncrKeepCnt : variable contenant le nombre de sauvegarde incrémentales à conserver
  • FullKeepCntMin : nombre minimal de sauvegardes complètes complètes à conserver
  • IncrKeepCntMin : nombre minimal de sauvegardes incrémentales à conserver
  • FullAgeMax et IncrAgeMax: Ces variables contiennent le nombre de jours après lesquels une sauvegarde est effacée (respectivement complète et incrémentale). Néanmoins le nombre de sauvegardes définies par 'FullKeepCntMin' et 'IncrKeepCntMin' sont conservées quelque soit leur ancienneté.
  • BlackoutPeriods : Cette variable donne un intervalle de temps durant lequel seules les sauvegardes lancées manuellement seront prises en compte.



Exemple

programmation d'une sauvegarde complète toutes les semaines et d'une incrémentielle toutes les trois heures en dehors des plages de blackout Dans l'image précédente, on observe les paramètres suivants

FullPeriod: 6.97

Une sauvegarde complète par semaine

Fullkeepcnt: 7

On garde 7 complètes

Fullkeepcntmin: 1

on en garde au moins une

Fullagemax : 90

La plus vielle aura 90 jours

Incrperiod: 0.122

L'unité est la journée, 0.122 (presque 1/8) permet d'obtenir une sauvegarde incrémentielle toutes les 3 heures.

Pour le bassin de Dijon, ne pas sauvegarder toutes les 3 heures mais une fois par jour (Incrperiod: 0.97)


Ce paramétrage permet une complète le week end, et des incrémentielles toutes les 3 heures sauf la nuit (on interdit les incrémentales de 17h30 à 7h)

Pour un rsync (serveur linux)

Sur le poste à sauvegarder

sudo su
ssh-keygen –t rsa
  • Répondre "entrer" à toutes les questions
  • Pour améliorer la résolution ssh, on ajoute le nom DNS de Backuppc dans le fichier de résolution de la machine ubu
sudo vi /etc/hosts ou nano /etc/hosts
  • mettre IP du poste backuppc
10.X.Y.Z -> serveurbackuppc


Sur Backuppc

Dans une fenêtre de commande :

su BackupPC
ssh-keygen –t rsa

Répondre "entrer" à toutes les questions

cp ~/.ssh/id_rsa.pub ~/.ssh/BackupPC_id_rsa.pub
scp ~/.ssh/BackupPC_id_rsa.pub root@10.21.20.10:/root/.ssh/

Il faudra répondre yes a la 1ere question et taper le mot de passe du client

Sur le poste à sauvegarder

cat ~/.ssh/BackupPC_id_rsa.pub >> ~/.ssh/authorized_keys
vi ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub root@10.21.20.9:/var/lib/backuppc/.ssh/client_id_rsa.pub

Il faudra répondre yes a la 1ere question et taper le mot de passe du client

Sur Backuppc

cat ~/.ssh/client_id_rsa.pub >> ~/.ssh/known_hosts
su
rm –f /var/lib/backuppc/.ssh/client_id_rsa.pub
su backuppc
chmod –R go-rwx ~/.ssh

Sur le poste à sauvegarder

chmod –R go-rwx ~/.ssh


Test sur le serveur

ssh –l root 10.21.20.10 whoami

La réponse doit être root si la transaction ssh fonctionne


Paramétrage de la sauvegarde

Allez dans Xfer

Choisir "rsync" dans le menu déroulant

Dans RsyncShareName : /Data