« LINUX:BackupPC » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 22 : Ligne 22 :
* La première phase consiste à récupérer l'arborescence à sauver localement ou à distance.
* La première phase consiste à récupérer l'arborescence à sauver localement ou à distance.
* Ensuite il vérifie que chaque fichier est strictement identique ou n'existe pas dans sa bibliothèque.
* Ensuite il vérifie que chaque fichier est strictement identique ou n'existe pas dans sa bibliothèque.
* Si ce fichier n'existe pas, il le compresse et le range dans sa bibliothèque.
* Si ce fichier n'existe pas ou n'est pas identique, il le compresse et le range dans sa bibliothèque.
* Il met à jour sa liste des fichiers.
* Il met à jour sa liste des fichiers.
* Enfin calcule quelques statistiques.
* Enfin calcule quelques statistiques.
Ligne 65 : Ligne 65 :




En pratique, nous avons un premier répertoire "/disk2/backup/courant" géré par l'utilisateur "adebast" et le répertoire "/disk3/photo" géré par l'utilisateur "fbertrand". La bibliothèque de BackupPC sera mise le File System "/disk4" dans le répertoire "/disk4/backuppc".
En pratique, nous avons un premier répertoire "/disk2/backup/courant" géré par l'utilisateur "adebast" et le répertoire "/disk3/photo" géré par l'utilisateur "fbertrand". Ces deux répertoires sont mis à disposition de BackupPC par le service RSYNCD. La bibliothèque de BackupPC sera mise sur le File System "/disk4" dans le répertoire "/disk4/backuppc".




Ligne 114 : Ligne 114 :


=Configuration d'HTTPD=
=Configuration d'HTTPD=
BackupPC présente une interface Web. Un fichier spécial est ajouté dans la configuration d'HTTPD: le fichier "/etc/httpd/conf.d/BackupPC.conf". Nous y faisons quelques modifications afin que seuls les machines de notre LAN y accèdent.
BackupPC présente une interface Web. Un fichier spécial est ajouté dans la configuration d'HTTPD: le fichier "'''/etc/httpd/conf.d/BackupPC.conf'''". Nous y faisons quelques modifications afin que seules les machines de notre LAN y accèdent.
----
----
  <DirectoryMatch /usr/(share|libexec)/BackupPC/>
  <DirectoryMatch /usr/(share|libexec)/BackupPC/>
Ligne 144 : Ligne 144 :
  htpasswd -b /etc/BackupPC/apache.users adebast
  htpasswd -b /etc/BackupPC/apache.users adebast
  htpasswd -b /etc/BackupPC/apache.users fbertrand
  htpasswd -b /etc/BackupPC/apache.users fbertrand
Ce fichier doit pouvoir être lu par l'utilisateur "apache" responsable du service HTTPD.
Ce fichier doit pouvoir être lu par l'utilisateur ou le groupe "apache" responsable du service HTTPD.




Ligne 172 : Ligne 172 :
  mkdir /disk4/backuppc/cpool
  mkdir /disk4/backuppc/cpool
  chmod -R 750 /disk4/backuppc
  chmod -R 750 /disk4/backuppc
chown -R backuppc:backuppc /disk4/backuppc


Le fichier "/etc/updatedb.conf" contient aussi une référence à ce répertoire "/var/lib/BackupPC"; adaptez le également avec un éditeur de texte.
Le fichier "/etc/updatedb.conf" contient aussi une référence à ce répertoire "/var/lib/BackupPC"; adaptez le également avec un éditeur de texte.

Version du 13 février 2022 à 15:54

But

BackupPC est un logiciel de sauvegarde puissant basé sur une interface WEB. Il est à installer sous Linux Il peut sauvegarder des espaces de fichiers se trouvant sur des machines distantes aussi bien Linux, sur base de "RSYNC, RSYNCD et d'autres, que Windows sur base de SMB et RSYNCD.


Principe

BackupPC permet d'effectuer des sauvegardes. Il sauvegarde des arborescences de fichiers désignées par configuration. Pour les sauvegardes de machines Windows distante, il utilise une connexion de type SMB ou RSYNCD; pour sauvegarder une machine Linux locale ou distante, il utilise une connexion de type RSYNC ou RSYNCD. Il peut utiliser d'autres méthodes comme FTP, TAR ou ARCHIVE.


Une interface WEB permet de le configurer, d'initier des sauvegardes, de surveiller l'activité de sauvegarde et de récupérer les fichiers désirés.


Les sauvegardes sont soit totales soit incrémentielles.

  • Une totale consiste à tout traiter.
  • Une incrémentielle consiste à ne traiter que ce qui a changé depuis la précédente sauvegarde.

Le paramétrage permet de régler la fréquence des sauvegardes automatiques: les horaires de sauvegardes, le nombre de sauvegardes, l'alternance de sauvegardes totales et incrémentielles et bien d'autres fonctions.


D'autre part un service spécifique effectue les sauvegardes, nettoie les anciennes sauvegardes périmées et consolide l'ensemble des fichiers sauvés.

Pour la sauvegarde:

  • La première phase consiste à récupérer l'arborescence à sauver localement ou à distance.
  • Ensuite il vérifie que chaque fichier est strictement identique ou n'existe pas dans sa bibliothèque.
  • Si ce fichier n'existe pas ou n'est pas identique, il le compresse et le range dans sa bibliothèque.
  • Il met à jour sa liste des fichiers.
  • Enfin calcule quelques statistiques.

Chaque nuit, une analyse de la bibliothèque est effectuée; les sauvegardes périmées sont supprimées ainsi que les fichiers qui ne sont plus concernés par les sauvegardes.


Bibliothèque

La bibliothèque consiste en un ensemble de fichiers concernés par la sauvegarde organisés en une arborescence basée sur le checksum du fichier concerné. Tout fichier strictement identique par son contenu n'est repris qu'une seule fois et donc deux fichiers ayant des noms différents ou sauvés à des dates différentes ou venant de machines différentes ou se trouvant dans des arborescences différentes ou à des ensembles différents de sauvegardes mais identiques, ne seront présents qu'une seule fois. Ceci est possible par une caractéristique des files system de Linux; chaque fichier est identifié par un n° unique dans son file system dénommé inode. Le fichier spécial que l'on nomme "répertoire" est une table de correspondance entre un nom de fichier et l'inode d'un fichier. La fonction "ln" (hard link) permet d'effectuer de multiples liaisons entre divers noms de fichier et un seul contenu.

Ceci est très important car cette bibliothèque, pour fonctionner, doit se situer sur un seul "file system" ayant une capacité suffisante. Notons que des systèmes de gestion de disques tels LVM ou RAID5 permettent de grouper plusieurs disques physiques en un seul "file system". Il faut donc, dès le départ, bien choisir cet emplacement. Lors de l'installation cet emplacement est situé dans le répertoire "/var/lib/BackupPC" qui est rarement suffisant. Ce premier paramétrage est fondamental sous peine d'arriver rapidement à saturation et donc de devoir recommencer tout en perdant les sauvegardes existantes.


Installation

Pour l'installer utilisez la commande suivante:

dnf install BackupPC


Services

BackupPC utilise une interface WEB et donc le service HTTP doit être activé:

systemctl enable httpd.service

et lancé:

systemctl start httpd.service


Il utilise aussi son propre service qui est chargé de gérer les sauvegardes.

Il faut activer ce service:

systemctl enable backuppc.service

et le lancer:

systemctl start backuppc.service


Projet

Suite à mon expérience professionnelle, je trouve que le programme "rsync" en mode synchronisation comme présenté dans les articles précédents est le plus rapide et globalement le moins gourmand en ressources réseaux quand on a de nombreuses machines à sauver dans un WAN dispersé. Et donc j'en suis arrivé à rassembler sur une machine décentralisée et isolée, l'ensemble des données à sauver. Les machines Windows étaient récupérées via le protocole RSYND comme décrit dans l'article "RSYNCD" et les machines Linux comme décrit dans l'article "RSYNC-Rassemblement sur une autre machine" évidemment sans devoir allumer ni éteindre cette machine.

A partir de cette machine d'archivage, on utilise l'application BackupPC pour archiver cet ensemble de fichiers locaux en utilisant le protocole RSYNCD.


Nous avons donc à configurer RSYNCD, HTTPD et BackupPC sur la machine rassemblant toutes les sauvegardes. On suppose que cette machine a l'adresse IP 192.168.1.2 et se nomme "serverbck.home.dom".


En pratique, nous avons un premier répertoire "/disk2/backup/courant" géré par l'utilisateur "adebast" et le répertoire "/disk3/photo" géré par l'utilisateur "fbertrand". Ces deux répertoires sont mis à disposition de BackupPC par le service RSYNCD. La bibliothèque de BackupPC sera mise sur le File System "/disk4" dans le répertoire "/disk4/backuppc".


Configuration de RSYNCD

Pour la configuration du service RSYNCD, nous vous reportons à l'article "RSYNCD". Il n'y a que le fichier de configuration et le fichier du mot de passe à modifier.

Le fichier "/etc/rsyncd.conf" contient:


uid = root
gid = root
use chroot = yes
max connections = 4
pid file = /run/rsyncd.pid
dont compress  = *.gz *.tgz *.zip *.ZIP *.z *.Z *.rpm *.deb *.bz2 *.jpg *.JPG *.jpeg *.JPEG
[backup]
  path = /disk2/backup/courant
  comment = Backup
  strict modes = false
  auth users = backuppc
  secrets file = /etc/rsyncd.secrets
  hosts allow = 192.168.1.2
  read only = true
  list = false
  charset=utf-8
[photo]
  path = /disk3/photo
  comment = Photo
  strict modes = false
  auth users = backuppc
  secrets file = /etc/rsyncd.secrets
  hosts allow = 192.168.1.2
  read only = true
  list = false
  charset=utf-8

Les partages se nomment "backup" et "photo". On les retrouvera dans la configuration de BackupPC. On remarque qu'un certains nombre de fichiers ne seront pas compressés lors du transfert. C'est normal car ces fichiers sont déjà compressés.

Le fichier "/etc/rsyncd.secrets" contient:


backuppc:Faucon999Noir

L'utilisateur de connexion au service RSYNCD est "backuppc". On le retrouvera dans la configuration de BackupPC.


Il reste à redémarrer le service RSYNCD.


Configuration d'HTTPD

BackupPC présente une interface Web. Un fichier spécial est ajouté dans la configuration d'HTTPD: le fichier "/etc/httpd/conf.d/BackupPC.conf". Nous y faisons quelques modifications afin que seules les machines de notre LAN y accèdent.


<DirectoryMatch /usr/(share|libexec)/BackupPC/>
 AuthType Basic
 AuthUserFile /etc/BackupPC/apache.users
 AuthName "BackupPC"
 <IfModule mod_authz_core.c>
  <RequireAll>
   Require valid-user
   <RequireAny>
     Require ip 192.168.1
   </RequireAny>
  </RequireAll>
 </IfModule>
</DirectoryMatch>
Alias           /BackupPC/images        /usr/share/BackupPC/html/
ScriptAlias     /BackupPC               /usr/libexec/BackupPC/BackupPC_Admin
ScriptAlias     /backuppc               /usr/libexec/BackupPC/BackupPC_Admin

Il faut ensuite redémarrer le service HTTPD.


On remarque en début de ce fichier qu'une authentification sera demandée. Le fichier contenant le nécessaire à cette validation se trouve dans le fichier "/etc/BackupPC/apache.users". Il contient dans chaque ligne un couple "nom d'utilisateur" et son "mot de passe" crypté. Il faut donc créer ce fichier et y ajouter les utilisateurs voulant accéder à cet interface Web.

Nous désirons ajouter les deux utilisateurs demandés par le projet: "adebast" et "fbertrand". Il faut aussi définir un utilisateur ayant tous les droits que nous nommerons "admin". La séquence de ces trois commandes y pourvoit; la première crée aussi le fichier. A chaque fois, un mot de passe sera demandé:

htpasswd -c /etc/BackupPC/apache.users admin
htpasswd -b /etc/BackupPC/apache.users adebast
htpasswd -b /etc/BackupPC/apache.users fbertrand

Ce fichier doit pouvoir être lu par l'utilisateur ou le groupe "apache" responsable du service HTTPD.


Ne pas oublier d'ouvrir le pare feu pour ce service HTTPD.


Utilisateur Linux

Un utilisateur "backuppc" et un groupe "backuppc" ont été créés lors de l'installation. Le service "backuppc" est lancé par cet utilisateur. La bibliothèque et les fichiers de configurations doivent lui être accessibles en contrôle total. Le répertoire racine de l'utilisateur "backuppc" est le même que celui de la bibliothèque. Par soucis de cohérence, comme nous allons changer l'emplacement de la bibliothèque, nous allons adapter la racine de cet utilisateur. Grâce à un éditeur de texte, on modifie la ligne concernée dans le fichier "/etc/passwd".

Si cette ligne est:


backuppc:x:975:959::/var/lib/BackupPC:/sbin/nologin

elle devient:


backuppc:x:975:959::/disk4/backuppc:/sbin/nologin


Configuration de la bibliothèque

Lors de l'installation, la bibliothèque se trouve dans le répertoire "/var/lib/BackupPC". On veut la placer dans le répertoire "/disk4/backuppc". Ce répertoire doit contenir trois sous-répertoires: "pool", "cpool" et "pc". Toute cette arborescence doit appartenir à l'utilisateur "backuppc" responsable du service "backuppc" en contrôle total car il doit y lire et écrire.

Voici la séquence de commandes:

mkdir /disk4/backuppc
mkdir /disk4/backuppc/pc
mkdir /disk4/backuppc/pool
mkdir /disk4/backuppc/cpool
chmod -R 750 /disk4/backuppc
chown -R backuppc:backuppc /disk4/backuppc

Le fichier "/etc/updatedb.conf" contient aussi une référence à ce répertoire "/var/lib/BackupPC"; adaptez le également avec un éditeur de texte.


Configuration principale de BackupPC

Les fichiers de configuration de BackupPC se trouvent dans le répertoire "/etc/BackupPC". Ce répertoire et son contenu doit être en accès complet à l'utilisateur "backuppc" et en accès pour la lecture au groupe "apache". Le premier doit pouvoir modifier la configuration et le second la lire pour l'affichage dans l'interface Web.

Le fichier de la configuration par défaut se nomme "/etc/BackupPC/config.pl". Pour notre projet, nous devons en modifier quelque uns. Il est possible de modifier tous les paramètres de configuration via l'interface Web mais si possible, je préfère les modifier directement dans fichier grâce à un éditeur de texte; ceci me permet d'ajouter un commentaire juste au dessus de la modification et de laisser sous forme de commentaire la configuration originale.

Voici les paramètres à modifier:


$Conf{ServerHost} = 'localhost';
$Conf{TopDir}     = '/var/lib/BackupPC/';
$Conf{XferMethod} = "rsync";
$Conf{RsyncdUserName} = ;
$Conf{RsyncdPasswd} = ;
$Conf{CgiAdminUsers}     = ;
$Conf{CgiURL} = "http://localhost/BackupPC";
$Conf{Language} = 'en';

Voici ces mêmes paramètres modifiés:


# nom du serveur 
$Conf{ServerHost}     = 'serverbck.home.dom';
# emplacement de la bibliothèque
$Conf{TopDir}         = '/disk4/backuppc/';
# protocole de transfert utilisé: RSYNCD
$Conf{XferMethod}     = "rsyncd";
# nom de l'utilisateur RSYNCD
$Conf{RsyncdUserName} = 'backuppc';
# mot de passe de l'utilisateur RSYNCD
$Conf{RsyncdPasswd}   = 'Faucon999Noir';
# nom de l'administrateur de l'interface Web de BackupPC
$Conf{CgiAdminUsers}  = 'admin';
# URL de l'interface de BackupPC
$Conf{CgiURL}         = "http://serverbck.home.dom/BackupPC";
# la langue de l'interface sera française
$Conf{Language}       = 'fr';

Les noms des variables sont explicites; les commentaires donnent plus de détails. On y retrouve nombre de contraintes émises lors de la présentation du projet. L'administrateur "admin" aura tous les droits alors que les autres utilisateurs auront des droits restreints sur leur espace de sauvegarde. D'autres paramètres comme l'horaire des sauvegardes peuvent être adaptés selon vos désirs via l'interface Web.

Ne pas oublier de relance le service "backuppc".


Configuration des machines à sauver

BackupPC est prévu pour effectuer des sauvegardes de machines distantes. Le fichier de configuration concerné se nomme "/etc/BackupPC/hosts'".

Mais notre projet ne concerne que notre machine locale et de plus nous voulons séparer cette sauvegarde en deux parties gérées par deux utilisateurs distincts. Pour y arriver, nous devons contourner la contrainte imposée par le logiciel. Nous allons utiliser une astuce.

Le fichier "/etc/hosts" permet de lier un nom de machine à une adresse IP. Il joue en quelque sorte le rôle d'un DNS n'agissant que localement. En plus du nom de machine lié à une adresse IP, on peut y ajouter des alias. Nous en avons besoin de deux, un pour chaque espace de sauvegarde.

Voici la ligne:


192.168.1.2 serverbck.home.dom serverbck serverbck1.home.dom serverbck2.home.dom


Maintenant nous pouvons configurer les deux espaces de sauvegardes dans le fichier "/etc/BackupPC/hosts'":


host                dhcp    user    moreUsers     # <--- do not edit this line
serverbck1.home.dom 0       adebast
serverbck2.home.dom 0       fbertrand

Explications:

  • La première ligne défini le nom des colonnes. A ne pas modifier!!!
  • La seconde ligne correspond à l'espace à sauver "/disk2/backup/courant" connu dans RSYNCD sous le nom "backup"; On utilise le premier alias du nom de la machine locale et il est géré par l'utilisateur "adebast".
  • La troisième ligne correspond à l'espace à sauver "/disk3/photo" connu dans RSYNCD sous le nom "photo"; On utilise le premier alias du nom de la machine locale et il est géré par l'utilisateur "fbertrand".


A chacune de ces machines correspond un fichier de configuration. Ces fichiers doivent se trouver dans le répertoire "/etc/BackupPC/pc"; il portent le nom de la machine à sauver suivi de l'extension ".pl".

Le premier fichier se nomme "/etc/BackupPC/pc/serverbck1.home.dom.pl". On y défini le nom de l'espace à sauver connu par RSYNCD:


$Conf{RsyncShareName} = [
 'backup'
];

Le second fichier se nomme "/etc/BackupPC/pc/serverbck2.home.dom.pl". On y défini le nom de l'espace à sauver connu par RSYNCD:


$Conf{RsyncShareName} = (
 'photo'
);
$Conf{CompressLevel} = 0;

On remarque un autre paramètre concernant le taux de compression. Cet espace est occupé par des photos au format JPEG naturellement compressées; il est donc inutile d'utiliser des ressources pour compresser un fichier sans gain substantiel. Par défaut ce paramètre vaut 3.


Ne pas oublier de relance le service "backuppc". Egalement ne pas oublier de régler les droits d'accès comme décrit plus haut.


BackupPC: interface Web

Enfin nous pouvons découvrir l'interface Web en introduisant dans notre explorateur internet l'URL: http://serverbck.home.dom/BackupPC ou http://192.168.1.2/BackupPC. Un nom d'utilisateur et un mot de passe vous sont demandés au préalable. Utilisez celui de l'administrateur, dans notre cas, "admin" pour avoir une vue complète.




->retour à la Sauvegarde