Changes

From SME Server
Jump to navigationJump to search
RC-001
<!--__NOTOC__ -->
= Description générale =

Cette marche à suivre décrit: l'installation de BackupPC-4.2, les sauvegardes de l'hôte de BackupPC et du serveur SOURCE et enfin la restauration de la sauvegarde complète du Serveur SME '''''SOURCE''''' sur le Serveur SME '''''DESTINATION''''' pour que ce dernier devienne une clone du premier.

* Ce document est basé sur la contribution: https://wiki.contribs.org/BackupPC et le bogue https://bugs.contribs.org/show_bug.cgi?id=10514.
*
* Page officielle de BackupPC: https://backuppc.github.io/backuppc/.

''Référence'': [https://fr.wikipedia.org/wiki/BackupPC https://fr.wikipedia.org/wiki/BackupPC].

BackupPC est un logiciel de sauvegarde de systèmes de fichiers publié sous licence GPL. Il est utilisé pour sauvegarder sur disque un ensemble de postes clients et de serveurs sous: Unix, Linux, Windows ou Mac OS X. Les protocoles utilisables pour les transferts sont: SMB, tar over SSH/rsh/nfs, et rsync. Il ne nécessite l'installation d'aucun logiciel client sur les machines à sauvegarder. Il possède une interface Web pour lancer des sauvegardes ou restaurer des fichiers. Il est également possible de sauvegarder des bases de données via un script shell lancé avant la sauvegarde.

= Prérequis =
'''Serveur SME-9.2'''

* Pour l'installation d'un Serveur SME-9.2, voir: https://www.micronator.org/affaires/produit/micronator-101-cahier-2installation-dun-serveur-sme/.
* Le Cahier-2 ''(gratuit)'' du cours Micronator-101 décrit aussi l'installation de VirtualBox et la création d'une machine virtuelle SME-9.2.
* Installation des dernières mises à jour SME-9.2.

'''Disque de sauvegarde'''

* Disque de sauvegarde: un volume dédié est recommandé ''(peut être un simple disque unique ou des disques en RAID)''.

'''Logiciels prérequis'''

* Le Cahier-1 ''(gratuit)'' du cours Micronator-101 décrit l'installation et la configuration des logiciels prérequis sur le poste de travail de l'Étudiant: https://www.micronator.org/affaires/produit/micronator-101-cahier-1installations-configurationsdes-logiciels-prerequis/.

'''Machine virtuelle'''

Ce document utilise des machines virtuelles roulant SME-9.2 sous VirtualBox. La marche à suivre pour l'installation de BackupPC sur un Serveur SME physique est exactement la même.

= Installation =
=== Environnement ===

* '''<span style="color:purple">BackupPC</span>''' est le serveur qui roulera BackupPC et qui entreposera les sauvegardes sur son deuxième disque.

* '''<span style="color:purple">SOURCE</span>''' est le Serveur SME-9.2 dont on fera une sauvegarde Complète et deux Incrémentielles.

* '''<span style="color:purple">DESTINATION</span>''' est un Serveur SME-9.2 sur lequel on restaurera la sauvegarde du serveur '''<span style="color:purple">SOURCE</span>''' et ainsi il en deviendra un clone parfait.

* '''<span style="color:purple">Micronator-101.org</span>''' est un Serveur SME-9.2 qui sert de pare-feu et de passerelle Internet pour tout le réseau.

* But final: migrer le serveur '''<span style="color:purple">SOURCE</span>''' vers le serveur '''<span style="color:purple">DESTINATION</span>'''.


[[Image:001-BPC-ButFinal.png|center|700px]]

===Serveur BackupPC ===
Une machine virtuelle, sous VirtualBox, roulant un Serveur SME-9.2. La marche à suivre pour l'installation sur un Serveur SME physique est exactement la même.

Les dernières mises à jour SME-9.2 ont été installées.

Un deuxième disque à été créé pour recevoir les sauvegardes. Il n'est que de 20Go mais est amplement suffisant pour cette démonstration.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Si vous créez le disque de stockage des sauvegardes trop petit, BackupPC pourrait manquer d'inodes pour la création de liens.

Ce document utilise trois machines virtuelles, sous VirtualBox, roulant toutes un Serveur SME-9.2.

Les marches à suivre pour des sauvegardes de Serveurs SME physiques sont exactement les mêmes.
<div id="Paramètres SSH de tous les serveurs"></div>
=== Paramètres SSH de tous les serveurs ===
Vu que:
# Les sauvegardes se font à travers une connexion SSH afin que personne ne puisse copier les données en transit.
# L'usager qui lit les fichiers à être sauvegardés doit être '''root''' car, il est le seul qui peut lire tous les fichiers sans exception.

Il faut donc autoriser les connexions SSH pour l'usager '''root'''.

<center>'''Gestionnaire Server Manager > Accès à distance > Paramètres SSH.'''</center>

[[Image:002-BPC-ParamSSH.png|center|700px|border]]

* '''Accès par terminal sécurisé (SSH)'''<br/>Si tous vos serveurs sont sur le réseau local, choisissez ''N'autoriser l'accès que depuis les réseaux locaux'' sinon, choisissez ''Autoriser l'accès complet (LAN et Internet'').
* '''Autoriser l'administrateur à se connecter au serveur par SSH'''<br/><code>Oui</code> obligatoirement car, seul root peut lire tous les fichiers à sauvegarder.
* '''Autoriser l'authentification par SSH à l'aide de mots de passe standards'''<br/><code>Oui</code> car quelquefois, on pourrait devoir accéder au serveur pour corriger un trouble quelconque.<br/>BackupPC utilise une clé publique SSH créée par l'usager '''backuppc''' pour se connecter sans avoir à fournir de mot de passe.
* '''Port TCP pour l'accès SSH'''<br/>On utilise le port <code>2222</code> afin de dérouter un peu plus les indésirables.

=== Disque de stockage des sauvegardes ===
'''Création d'une partition principale sur le disque de stockage'''

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Les sauvegardes devraient toujours être sur un volume séparé.

On prépare un disque dur avec un système de fichiers <code>ext4</code> ''(on peut utiliser tous les systèmes de fichiers qui sont supportés; nous utilisons <code>ext4</code> car, <u>il autorise plus d'inodes</u>)''.

Dans ce document, on utilise un disque entier ayant une simple partition primaire: <code>/dev/sdb1</code>. On pourrait utiliser une matrice RAID ou un volume logique ''(LVM, ou une combinaison de RAID et LVM)''. Si vous connaissez la gestion LVM, son utilisation est également recommandée car, plus tard, il sera plus facile de gérer les données des sauvegardes.


Recherche du dispositif<ref name="ftn1">'''Dispositif''': Unité qui assure la réalisation d'une opération particulière, indispensable au bon fonctionnement d'un système informatique, d'une machine ou d'un appareil.<br>''Référence'': [http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8357059 http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8357059].</ref> ''(device)'' du disque de stockage des futures sauvegardes.
# cat /proc/partitions

major minor <nowiki>#blocks </nowiki> name

8 16 20971520 <span style="color:red">sdb</span>
8 0 8388608 sda
8 1 256000 sda1
8 2 8131584 sda2
9 1 8127488 md1
253 0 7286784 dm-0
253 1 835584 dm-1
9 0 255936 md0

<nowiki>*</nowiki> Le disque est <code>/dev/sdb</code>.


On lance <code>fdisk</code> pour la création de la partition.
# fdisk /dev/sdb

On vérifie s'il existe déjà une partition, "p".
p [Entrée]

{| class="wikitable"
|-style="width:600;"
|<pre> Disque /dev/sdb: 21.5 Go, 21474836480 octets
255 têtes, 63 secteurs/piste, 2610 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identifiant de disque : 0x51550b50

Périphérique Amorce Début Fin Blocs Id Système

Commande (m pour l'aide):</pre>
|}

<nowiki>*</nowiki> Il n'y a pas de partition sur le disque. S'il y en avait une, on la supprimerait avec <code>d</code> ''(delete / supprimer la partition)''.

On crée la partition, on entre: <code>n</code>, <code>p</code>, <code>1</code>, les choix par défaut pour le premier et le dernier <code>cylindre</code>.

On enregistre les nouveaux paramètres et on quitte <code>wq</code> ''(write and quit)''.

On vérifie.
# cat /proc/partitions

major minor <nowiki>#blocks </nowiki> name

8 16 20971520 sdb
8 17 20964793 <span style="color:red">sdb1</span>
8 0 8388608 sda
8 1 256000 sda1
8 2 8131584 sda2
9 1 8127488 md1
253 0 7286784 dm-0
253 1 835584 dm-1
9 0 255936 md0

'''Création du système de fichiers ext4 dans la partition sdb1'''

''<u>Remarque sur les inodes</u>'': En plus de l'espace disque total, vous devez vous assurer que vous avez beaucoup d'inodes sur votre partition de données de BackupPC. Certains utilisateurs ont signalé l'épuisement des inodes sur leur partition de données de BackupPC. Par conséquent, même si vous disposez de suffisamment d'espace disque, BackupPC signale un échec lorsque les inodes sont épuisés. C'est un problème particulier avec les systèmes de fichiers <code>ext2</code> et <code>/ext3</code> qui ont un nombre fixe d'inodes lors de la construction du système de fichiers. Utilisez <code>df -i</code> pour voir votre utilisation d'inodes.

Pour notre machine, avec un système de fichiers créé en <code>ext3</code> sans l'utilisation du paramètre <code>-i</code>, le nombre d'inodes était de seulement '''1 310 720'''.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;BackupPC utilise un très grand nombre de liens. Une partition <code>Ext4</code> sur un système 64 bits peut avoir '''2^64''' ou 64bits inodes; ce qui représente '''1.2470298e+28''' inodes.

Depuis la version BackupPC-4, il n'y a plus d'utilisation de liens physiques ''(sauf temporairement pour faire des renoms atomiques)''. Le comptage des références est géré en <code>batch</code> au niveau de l'application. ''(Les "hardlinks" resteront toujours pour toutes les sauvegardes héritées des versions BackupPC-3.)''

Voici, sur un système déjà existant, les infos de l'espace disque et du nombre d'inodes utilisés par la partition principale.

'''Espace disque'''
# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/main-root
6,8G <span style="color:red">3,5G</span> 2,9G 55% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
/dev/md0 239M 77M 150M 34% /boot

<nowiki>*</nowiki> Environ 3.5 Go d'espace disque est utilisé.

'''Nombre d'inodes'''
# df -i

Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/main-root
456064 <span style="color:red">155019</span> 301045 34% /
tmpfs 490294 1 490293 1% /dev/shm
/dev/md0 64000 54 63946 1% /boot

* Comme on le voit ci-dessus, le nombre d'inodes utilisés est de 155 019 pour 3.5 Go d'espace disque utilisé.

* Pour notre disque de 20 Go avec BackupPC, on prendra au minimum 10 fois plus d'inodes, environ 1 500 000. ''(Bien au dessus du maximum pour une partition <code>ext3</code> de 20 Go créé de manière standard.)''

* Prendre en considération: plus d'inodes et plus il faudra de temps pour créer le système de fichiers.

* D'autres systèmes de fichiers tels que '''btrfs''' peuvent créer des inodes de manière dynamique; à vous de choisir...


'''Paramètres de la commande <code>mkfs.ext4</code>'''

<code>-N nombre d'inodes</code>

Ce paramètre remplace le calcul par défaut du nombre d'inodes qui devrait être réservés pour le système de fichiers ''(basé sur le nombre de blocs et le ratio octets par inode)''. Il permet à l'utilisateur de spécifier directement le nombre d'inodes désirés.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Si on spécifie un nombre d'inodes trop grand, <code>mke2fs</code> donnera une erreur et ne créera pas le système de fichiers.

<code>-b block-size</code>

Spécifie, en octets, la taille des blocs. Les tailles valides sont: 1024, 2048 et 4096 octets par bloc. Si omis, la taille d'un bloc est déterminé de manière heuristique par la taille et l'utilisation du système de fichiers ''(voir le paramètre <code>-T</code>)''.

Si la taille d'un bloc est négative, alors <code>mke2fs</code> utilisera l'heuristique pour déterminer le taille d'un bloc avec la contrainte que la taille d'un bloc sera au moins de <code>block-size</code> octets.

<nowiki>*</nowiki> Utile pour certains périphériques matériels qui exigent que la taille des blocs soit un multiple de 2k.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;BackupPC utilise un très grand nombre de liens, une longueur de bloc de 1024 est plus profitable.

<code>-L nom_nouveau_volume</code>

Configure l'étiquette ''('''<u>L</u>'''abel)'' du système de fichiers à <code>nom_nouveau_volume</code>. La taille maximale du nom est de 16 octets.

<code>-m pourcentage_blocs_réservés</code>

Indique le pourcentage de blocs du système de fichiers réservés pour le superutilisateur. Permet d'éviter la fragmentation. Permet aussi aux démons lancés par le superutilisateur, comme <code>syslogd(8)</code>, de continuer à fonctionner correctement après que les processus non privilégiés ne soient plus autorisés à écrire sur le système de fichiers. La valeur par défaut est de <code>5</code> ''(5%)''.

Pour notre exemple, on crée un système de fichiers <code>ext4</code> sur le nouveau volume <code>/dev/sdb1</code>.
# mkfs.ext4 -L SAUVEGARDE -b 1024 -N 15000000 -m 1 /dev/sdb1

mke2fs 1.41.12 (17-May-2010)
Avertissement&nbsp;: 1463 blocs inutilisés.

Étiquette de système de fichiers=<span style="color:red">SAUVEGARDE</span>
Type de système d'exploitation&nbsp;: Linux
Taille de bloc=<span style="color:red">1024</span> (log=0)
Taille de fragment=1024 (log=0)
«&nbsp;Stride&nbsp;» = 0 blocs, «&nbsp;Stripe width&nbsp;» = 0 blocs
<span style="color:red">15005976</span> i-noeuds, 20963329 blocs
<span style="color:red">209647</span> blocs (1.00%) réservés pour le super utilisateur
Premier bloc de données=1
Nombre maximum de blocs du système de fichiers=88080384
2559 groupes de blocs
8192 blocs par groupe, 8192 fragments par groupe
5864 i-noeuds par groupe
Superblocs de secours stockés sur les blocs&nbsp;:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553,
1024001, 1990657, 2809857, 5120001, 5971969, 17915905, 19668993

Écriture des tables d'i-noeuds&nbsp;: complété
Création du journal (32768 blocs)&nbsp;: complété
Écriture des superblocs et de l'information de comptabilité du système de
fichiers&nbsp;: complété

<span style="color:purple">Le système de fichiers sera automatiquement vérifié tous les 30 montages ou
après 180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i
pour écraser la valeur.</span>

'''Montage du nouveau volume'''

'''''Point de montage'''''

On crée un point de montage ''(répertoire'') pour le nouveau volume.
# mkdir -p /var/lib/BackupPC

'''''Ajout dans fstab'''''

On ajoute ''(<code>>></code>)'' le point de montage dans <code>/etc/fstab</code> afin que le volume soit monté automatiquement à tous les amorçages.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour la commande.

cat >> /etc/fstab <<'EOT'
<nowiki># Pour le volume de stockage des sauvegardes de BackupPC</nowiki>
/dev/sdb1 /var/lib/BackupPC ext4 noatime 0 0

EOT

On vérifie.
# tail -n 5 /etc/fstab

'''''Montage du volume dans <code>/var/lib/BackupPC</code>'''''

On remonte tous les volumes en relisant <code>fstab</code> à l'aide de la commande <code>mount -a</code>.
# mount -a

On vérifie avec <code>mount</code>...
# mount | grep BackupPC

... et avec <code>df</code>.
# df -h

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;&nbsp;&nbsp;Pour le même volume ''sans spécifier le nombre d'inodes'', la quantité d'espace disque est un peu plus grande.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|/dev/sdb1 <span style="color:red">20G</span> 4,3M 20G 1% /var/lib/BackupPC
|}

Espace disque ''en spécifiant le nombre d'inodes''.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| /dev/sdb1 <span style="color:red">17G</span> 4,3M 17G 1% /var/lib/BackupPC
|}

* La différence réside dans l'espace réservé pour le stockage de la table des inodes.

===Création des liens symboliques ===
Cette partie est facultative mais recommandée.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Avec l'ajout de nouveaux liens, tous les fichiers liés à BackupPC ''(config et journaux)'' seront stockés sur le volume <code>SAUVEGARDE</code>. Vous serez alors en mesure d'échanger le disque <code>SAUVEGARDE</code> entre deux serveurs de sauvegardes.

On crée les sous-répertoires <code>etc</code> et <code>log</code> dans le répertoire <code>/var/lib/BackupPC/</code>.
# mkdir -p /var/lib/BackupPC/{etc,log}

Pour les '''''configurations''''', on crée un lien <code>/etc/BackupPC</code> qui pointe vers <code>/var/lib/BackupPC/etc</code>.
# ln -s /var/lib/BackupPC/etc /etc/BackupPC

Pour les '''''journaux''''', on crée un lien <code>/var/log/BackupPC</code> qui pointe vers <code>/var/lib/BackupPC/log</code>.
# ln -s /var/lib/BackupPC/log /var/log/BackupPC

=== Installation de la Contrib BackupPC ===

'''Dépôt de logiciels'''

''Référence'': [https://wiki.contribs.org/Fws https://wiki.contribs.org/Fws].

Installation du dépôt de logiciels '''fws'''.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour la commande.
db yum_repositories set fws repository \
BaseURL http://repo.firewall-services.com/centos/\$releasever \
EnableGroups no GPGCheck yes \
Name "Firewall Services" \
GPGKey http://repo.firewall-services.com/RPM-GPG-KEY \
Visible no \
status disabled

On signale le changement à yum.
# signal-event yum-modify

'''Installation de la Contribs'''

Nous installons la contribution BackupPC-4 et les ajouts pour les Serveurs SME.
# yum -y --enablerepo=smecontribs,fws install BackupPC4 smeserver-BackupPC

'''Signalisation de toutes les modifications'''

Signalisation <u>sans réamorçage</u>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki>#</nowiki> signal-event backuppc-update
|}

Signalisation traditionnelle <u>avec réamorçage</u>.
# signal-event post-upgrade ; signal-event reboot

= AutoBlock =
''Référence'': [https://wiki.contribs.org/BackupPC#Known_Issues https://wiki.contribs.org/BackupPC#Known_Issues].

Si on essaie de sauvegarder un Serveur SME distant, on risque de rencontrer une erreur ou un dépassement du délai d'attente de <code>ssh</code> dû à la fonction <code>AutoBlock</code> de <code>sshd</code>.

Bogue: [https://bugs.contribs.org/show_bug.cgi?id=9893 https://bugs.contribs.org/show_bug.cgi?id=9893].

Le message ci-dessous apparaîtra dans le journal de la machine BackupPC du serveur en question.

{| style="background: {{{color|#FFEED9}}}; border: 1px dashed; width:80%"
|Output from DumpPreUserCmd: ssh: connect to host 192.168.1.152 port 2222: Connection timed out
|}

Le problème vient du paramètre <code>AutoBlock=enabled</code> de <code>sshd</code>.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Pour une description détaillée d'<code>AutoBlock</code>, voir la section: [[#sshd & AutoBlock]].

On pourrait ouvrir une connexion sur le serveur distant et désactiver manuellement le paramètre <code>AutoBlock</code>. Une fois la sauvegarde terminée, il faudrait se reconnecter au serveur distant et réactiver <code>AutoBlock</code>. De plus, il faudrait le faire à chaque sauvegarde et pour tous les serveurs. Cette solution n'est donc pas très pratique.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Nous allons nous occuper d'<code>AutoBlock</code> avec les scripts pré/post-sauvegarde ci-dessous.

=== Contribution Fail2Ban ===

Lorsqu'on désactive la variable <code>AutoBlock</code>, le Serveur SME n'empêche plus les tentatives de connexions SSH infructueuses. Les tentatives peuvent ainsi se poursuivre tout au long de la sauvegarde.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Pour remédier à cette situation, on peut installer la contribution ''Fail2ban'' qui elle, bannira les adresses IP des instigateurs de ces tentatives.

Pour l'installation de ''Fail2ban'', voir: https://www.micronator.org/affaires/produit/sme-9-x8-x-fail2ban/.

<div id="Scripts pré/post-sauvegarde"></div>
= Scripts pré/post-sauvegarde =

'''Derscription'''

* Au début d'une sauvegarde, un Serveur SME nécessite une commande pré-sauvegarde <code>signal-event pre-backup</code> pour manipuler les bases de données afin qu'elles deviennent disponibles pour être sauvegardées.
* À la fin de la sauvegarde, le serveur nécessite une commande post-sauvegarde <code>signal-event post-backup</code> pour remettre les bases de données dans leur état initial.
* BackupPC fournit une variable <code>$Conf{DumpPreUserCmd}</code> pour exécuter une commande pré-sauvegarde et <code>$Conf{DumpPostUserCmd}</code> pour une commande post-sauvegarde.
* BackupPC fournit deux paramètres aux commandes pré-sauvegarde et post-sauvegarde:<br><code>'''''$sshPath'''''</code> - le chemin de la commande <code>ssh</code> ''(Pour les Serveurs SME, le chemin de cette commande est toujours le même: <code>/usr/bin/ssh</code>)''. <br><code>'''''$host'''''</code> - variable qu'utilise BackuPC pour sauvegarder le nom ou l'IP du serveur à être sauvegardé.


'''Fail2ban'''

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Vu que ce ne sont pas tous les Serveurs SME qui roulent Fail2ban, les scripts de pré/post-sauvegarde présentés dans cette section s'occupent de désactiver <code>AutoBlock</code> avant la sauvegarde et de la réactiver après la sauvegarde.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Si certains Serveurs SME <u><span style="color:red">roulent</span></u> Fail2ban, <code>AutoBlock</code> est désactivé en permanence et c'est Fail2ban qui le remplace. Pour ces serveurs particuliers, on n'utilise pas ces scripts de pré/post-sauvegarde. Voir les paragraphes: [[#Variable DumpPreUserCmd]] et [[#Variable DumpPostUserCmd]].


'''Répertoire de stockage des scripts'''

Nous créons un répertoire pour stocker nos scripts.
# mkdir /var/lib/BackupPC/script

On ajuste le propriétaire et le groupe.
# chown backuppc:backuppc /var/lib/BackupPC/script

On ajuste les droits.
# chmod 750 /var/lib/BackupPC/script

=== Script pre-sauvegarde.sh===

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour générer le script dans le fichier <code>pre-sauvegarde.sh</code>.

{| class="wikitable"
|-style="width:600;"
|<pre>cat > /var/lib/BackupPC/script/pre-sauvegarde.sh <<'EOT'
#!/bin/sh

#-------------------------------------------
# /var/lib/BackupPC/script/pre-sauvegarde.sh
#
# Michel-André, 2018-05-06_09h50
#-------------------------------------------

# Désactivation d'AutoBlock
/usr/bin/ssh -l root $1 "config setprop sshd AutoBlock disabled; /sbin/e-smith/signal-event remoteaccess-update"

# Pause de BackupPC
/bin/sleep 45

# Le test ci-dessous va écrire le statut de la propriété AutoBlock dans le journal.
# Output from DumpPreUserCmd: AutoBlock=disabled
# ou
# Output from DumpPreUserCmd: AutoBlock=enabled
if ( ! (/usr/bin/ssh -l root $1 config show sshd | grep 'AutoBlock=disabled') )
then
/bin/mail -s "AutoBlock=disabled NON FONCTIONNEL, arrêt des sauvegardes de la machine $1 pour 24 heures" admin@micronator-101.org < /dev/null

# Arrêt de la sauvegarde en cours et désactivation des sauvegardes de cette machine pour 24 heures.
#
# Référence: https://www.mail-archive.com/backuppc-users@lists.sourceforge.net/msg10075.html
# BackupPC_serverMesg stop HOST REQ_USER BACKOFF
# HOST is the host to cancel, REQ_USER is the requesting user (just for log purposes) and BACKOFF is the backoff time in hours.
#
/usr/share/BackupPC/bin/BackupPC_serverMesg stop $1 backuppc 24
fi

# pre-backup
/usr/bin/ssh -l root $1 "/sbin/e-smith/signal-event pre-backup"

# Pause de BackupPC
/bin/sleep 15

EOT</pre>
|}

On ajuste le propriétaire et le groupe du script.
# chown backuppc:backuppc /var/lib/BackupPC/script/pre-sauvegarde.sh

On ajuste les droits.
# chmod 550 /var/lib/BackupPC/script/pre-sauvegarde.sh


<span id="Variable DumpPreUserCmd"></span>
'''Variable $Conf{DumpPreUserCmd}'''

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|Choisir l''''Hôte''' '''> Modifier la configuration > '''onglet''' Paramètres de sauvegarde > '''cadre''' Commandes des usagers.'''
/var/lib/BackupPC/script/pre-sauvegarde.sh $host
||[[Image:005-BPC-DumpPreUserCmd.png|center|600px|border]]
|}
</center>
* Le chemin et le nom du script de pré-sauvegarde:&nbsp; &nbsp;<code>/var/lib/BackupPC/script/pre-sauvegarde.sh</code>.
* Le nom ou l'IP ''(de la machine à être sauvegardée: <code>$host</code>)'' qu'on passe en paramètre au script.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;<span style="color:red">'''Si certains Serveurs SME roulent Fail2ban'''</span>, <code>AutoBlock</code> est désactivé en permanence et c'est Fail2ban qui le remplace. Pour ces serveurs particuliers, on n'utilise pas le script de pré-sauvegarde; on entre plutôt directement la commande suivante dans la variable <code>DumpPreUserCmd</code>:
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|/usr/bin/ssh -l root $1 "/sbin/e-smith/signal-event pre-backup ; /bin/sleep 15" $host
|}

=== Script post-sauvegarde.sh ===

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour générer le script dans le fichier <code>post-sauvegarde.sh</code>.

cat > /var/lib/BackupPC/script/post-sauvegarde.sh <<'EOT'
<nowiki>#!/bin/sh</nowiki>

<nowiki>#--------------------------------------------</nowiki>
<nowiki># /var/lib/BackupPC/script/post-sauvegarde.sh</nowiki>
<nowiki>#</nowiki>
<nowiki># Michel-André, 2018-05-06_09h58</nowiki>
<nowiki>#--------------------------------------------</nowiki>

<nowiki># Commande post-backup</nowiki>
/usr/bin/ssh -l root $1 "/sbin/e-smith/signal-event post-backup"

<nowiki># Pause de BackupPC</nowiki>
/bin/sleep 15

<nowiki># Activation d'AutoBlock</nowiki>
/usr/bin/ssh -l root $1 "config setprop sshd AutoBlock enabled; /sbin/e-smith/signal-event remoteaccess-update"

<nowiki># Pause de BackupPC</nowiki>
/bin/sleep 45

<nowiki># Le test ci-desous va écrire le statut de AutoBlock dans le journal.</nowiki>
<nowiki># Output from DumpPreUserCmd: </nowiki> AutoBlock=disabled
<nowiki># ou</nowiki>
<nowiki># Output from DumpPreUserCmd: </nowiki> AutoBlock=enabled

if ( ! (/usr/bin/ssh -l root $1 config show sshd | grep 'AutoBlock=enabled') )
then
/bin/mail -s "AutoBlock=ensabled NON FONCTIONNEL. Vérifiez le paramètre de la machine $1 s.v.p." admin@micronator-101.org < /dev/null
fi

EOT

On ajuste le propriétaire et le groupe du script.
# chown backuppc:backuppc /var/lib/BackupPC/script/post-sauvegarde.sh

On ajuste les droits.
# chmod 550 /var/lib/BackupPC/script/post-sauvegarde.sh

On vérifie.
# ls -lsd /var/lib/BackupPC/script/post-sauvegarde.sh


<span id="Variable DumpPostUserCmd"></span>
'''Variable $Conf{DumpPostUserCmd}'''

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|Choisir l''''Hôte''' '''> Modifier la configuration > '''onglet''' Paramètres de sauvegarde > '''cadre''' Commandes des usagers.'''
/var/lib/BackupPC/script/post-sauvegarde.sh $host
||[[Image:009-BPC-DumpPostUserCmd.png|center|600px|border]]
|}
</center>

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;<span style="color:red">'''Si certains Serveurs SME roulent Fail2ban'''</span>, <code>AutoBlock</code> est désactivé en permanence et c'est Fail2ban qui le remplace. Pour ces serveurs particuliers, on n'utilise pas le script de post-sauvegarde; on entre plutôt directement la commande suivante dans la variable <code>DumpPostUserCmd</code>:
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|/usr/bin/ssh -l root $1 "/sbin/e-smith/signal-event post-backup ; /bin/sleep 15" $host
|}

= Clé SSH de BackupPC =
BackupPC doit générer une clé SSH, qu'on téléversera sur les machines à sauvegarder, afin qu'il puisse ouvrir un canal de communication SSH sans avoir à fournir de mot de passe.

'''Usager backuppc'''

L'installation de BackupPC a créé l'usager '''backuppc'''.
# cat /etc/passwd | grep backuppc

backuppc:x:393:393::/var/lib/BackupPC:/sbin/nologin

'''Génération de la clé SSH'''

On se substitue à l'usager '''backuppc'''.
# su -s /bin/bash backuppc

On génère une clé SSH de type RSA et de 2048 bits.

* On accepte le nom du fichier par défaut en tapant la touche <span style="color:red">[Entrée]</span>.
* On n'utilise pas de phrase de passe<ref name="ftn2">'''phrase de passe''': Groupe de mots et de caractères alphanumériques ou spéciaux, faisant office de mot de passe, connu de l'utilisateur seulement, qui sert à protéger sa clé privée et à l'identifier lors d'une connexion ou d'un transfert de fichier, tout en lui assurant une plus grande sécurité.<br/> ''Notes'': Les phrases de passe ne diffèrent des mots de passe que par la longueur. Les mots de passe sont généralement très courts - de 6 à 10 caractères -, alors que les phrases de passe peuvent comporter jusqu'à 100 caractères ''(et même plus)''. Leur longueur et la combinaison des mots et des caractères alphanumériques contribuent à les rendre plus difficiles à deviner que les mots de passe, et donc plus sûres.<br/> Une phrase de passe doit être: connue que de l'utilisateur, suffisamment longue pour être sûre, difficile à deviner, facile à retenir et à saisir sans erreur. Certains considèrent qu'elle devrait atteindre 80 à 100 caractères pour être vraiment efficace.<br/> ''Référence'': [http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8361195 http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8361195].</ref> en tapant la touche <span style="color:red">[Entrée]</span>.
* On confirme en tapant encore la touche <span style="color:red">[Entrée]</span>.

# ssh-keygen -t rsa -b 2048

Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/BackupPC/.ssh/id_rsa): <span style="color:red">[Entrée]</span>
Created directory '/var/lib/BackupPC/.ssh'.
Enter passphrase (empty for no passphrase): <span style="color:red">[Entrée]</span>
Enter same passphrase again: <span style="color:red">[Entrée]</span>
Your identification has been saved in /var/lib/BackupPC/.ssh/id_rsa.
Your public key has been saved in /var/lib/BackupPC/.ssh/id_rsa.pub.
The key fingerprint is:
a9:cb:44:f6:1a:ec:df:aa:1a:85:69:30:a5:5e:b6:5e backuppc@sme-9
The key's randomart image is:
+--[ RSA 2048]----+
| ..... |
| ...o. |
| o.... . |
|ooB . |
|++++ S |
|+*oo |
|.E= |
|. . |
| |
+-----------------+

On vérifie.
ls -ls /var/lib/BackupPC/.ssh/

2 -rw------- 1 backuppc backuppc 1675 28 avril 10:30 <span style="color:red">id_rsa</span>
1 -rw-r--r-- 1 backuppc backuppc 396 28 avril 10:30 <span style="color:blue">id_rsa.pub</span>

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;La clé <span style="color:red">id_rsa</span> est la clé privée qui doit toujours être cachée et n'être divulguée à absolument personne.

La clé <span style="color:blue">id_rsa.pub</span> est la clé publique et peut être partagée avec n'importe qui. Elle sert à chiffrer un message qui vous est destiné et que seule votre clé privée peut déchiffrer.

'''Différence entre les jeux de clés SSH'''

''Jeu SSH pour BackupPC''

* Ce jeu de clés SSH servira uniquement pour les communications SSH entre les clients des sauvegardes et le serveur BackupPC. Ce jeu se trouve dans le répertoire <code>/var/lib/BackupPC/.ssh</code> et comprend: <code>ssh/id_rsa</code> et <code>id_rsa.pub</code>.

''Jeu SSH du Serveur SME''

* Le jeu de clés SSH standard d'un Serveur SME se trouve dans le répertoire <code>/etc/ssh/</code> et comprend: <code>ssh_host_rsa_key</code> et <code>ssh_host_rsa_key.pub</code>.

<span id="Téléversement de la clé SSH publique de BackupPC"></span>
'''Téléversement de la clé SSH publique de BackupPC'''

Étant toujours l'usager '''backuppc''', On téléverse la clé publique de BackupPC sur le serveur lui-même (127.0.0.1<ref name="ftn3">'''127.0.0.1''': Le nom localhost est associé à l’adresse IPv6 ::1 et à la plage d’adresses IPv4 127.0.0.0/8 ''(toutes les adresses IPv4 comprises entre 127.0.0.1 et 127.255.255.255 dont la plus utilisée est 127.0.0.1)''. L’interface réseau virtuelle utilisée dans cette situation se nomme l’interface de loopback ''(abrégée par lo sous Unix)'' ou boucle locale.<br> ''Référence'': [https://fr.wikipedia.org/wiki/Localhost https://fr.wikipedia.org/wiki/Localhost].</ref>) afin que BackupPC puisse entrer en communication avec le serveur hôte sans devoir utiliser un mot de passe lors d'une connexion SSH.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Explications des paramètres pour la prochaine commande.

* <code>cat /var/lib/BackupPC/.ssh/id_rsa.pub</code> indique d'afficher la clé publique <code>id_rsa.pub</code>.
* Le caractère de pipe <code>|</code> indique de passer le résultat de la commande précédente <code>cat</code> à la commande suivante <code>ssh</code>.
* Le paramètre <code>-p 2222</code> indique d'utiliser le port 2222 pour la communication SSH.
<br>
<center>
{| style="background: {{{color|#FFEED9}}}; border: 1px dashed; width:80%"
|Si nous avons spécifié un port différent dans le fichier <span style="color:red">'''/root/.ssh/config'''</span>, le port spécifié dans le fichier <span style="color:red">'''config'''</span> <u>aura toujours préséance sur celui spécifié sur la ligne de commande</u> pour l'usager root.
|}
</center>
<br>
* Le paramètre <code>root@127.0.0.1</code> indique de se connecter en tant que <code>root</code> à l'adresse 127.0.0.1 ''(localhost)''.
* La partie entre guillemets ''("...")'' indique au serveur de destination i.e. BackupPC ''(localhost)'' d'exécuter la commande qui se trouve entre ces guillemets. Donc, BackupPC va afficher avec <code>cat</code> ce qu'il reçoit et va l'ajouter <code>>></code> au fichier: <code>/root/.ssh/authorized_keys2</code>.

# cat /var/lib/BackupPC/.ssh/id_rsa.pub | ssh -p 2222 root@127.0.0.1 "cat >> /root/.ssh/authorized_keys2"

The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is a0:2f:27:ab:cc:d8:a0:57:fc:57:ee:63:dd:58:cc:02.
Are you sure you want to continue connecting (yes/no)? <span style="color:red">yes</span>
Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts.
root@127.0.0.1's password: <span style="color:red">mot-de-passe-de-root_du-serveur-BackupPC</span>

'''Vérification de la connexion'''

On vérifie la connexion SSH sans mot de passe.
# ssh -p 2222 root@127.0.0.1

{| class="wikitable"
|-style="width:600;"
|<pre> Last login: Fri Apr 28 10:31:11 2018 from 127.0.0.1
<nowiki>************ Welcome to SME Server 9.2 *************</nowiki>

Before editing configuration files, familiarise
yourself with the automated events and templates
systems.

Please take the time to read the documentation
http://wiki.contribs.org/Main_Page

Remember that SME Server is free to download
and use, but it is not free to build

Please help the project :
http://wiki.contribs.org/Donate

<nowiki>****************************************************</nowiki></pre>
|}

* La connexion sans mot de passe fonctionne.


On se désengage de la connexion SSH sans mot de passe.
# exit

Nous sommes de retour, on sort de <code>su</code> et on revient à l'usager root.
# exit

= Accès à la page BackupPC =

Vous pouvez accéder à l'interface de BackupPC:

* Par le gestionnaire Server Manager.
* Directement par l'adresse de BackupPC: https://mon_domaine.tld/BackupPC.

'''''Accès par le gestionnaire Server Manager'''''

On lance le gestionnaire Server Manager en allant à: https://mon_domaine.tld/server-manager ou en passant par son adresse IP: https://IP_du_Serveur_SME/server-manager.

# On se logue obligatoirement avec l'usager <code>admin</code>.
# On clique BackupPC

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:011-BPC-LoginServerManager-A.png|center|top|250px|border]]
||[[Image:011-BPC-LoginServerManager-B.png|center|top|750px|border]]
|}
</center>

'''''Accès direct par l'adresse de BackupPC'''''

https://mon_domaine.tld/BackupPC ou avec l'adresse IP: https://IP_du_Serveur_SME/BackupPC.

Si nous ne sommes pas déjà logué dans le gestionnaire Server Manager, on nous présentera l'écran de login:

# On se logue obligatoirement avec l'usager <code>admin/mot-de-passe</code> du Serveur SME.
# La page principale de BackupPC s'affiche sans avoir à passer par le gestionnaire.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:011-BPC-LoginServerManager-A.png|center|top|250px|border]]
||[[Image:011-BPC-LoginServerManager-C.png|center|top|750px|border]]
|}
</center>

= Configuration préliminaire de BackupPC =
=== CGI ===
'''''Langue de l'interface'''''

On clique: '''Edit Config >''' onglet''' CGI'''.

# Pour la variable '''''Language''''', on choisit <code>'''fr'''</code>.<br>Le bouton <code><span style="color:red">Save</span></code> devient actif.<br>On le clique pour sauvegarder la modification.
# Rafraîchir la page du navigateur<br>'''Renvoyer'''.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:012-BPC-CGI-A.png|center|top|450px|border]]
||[[Image:012-BPC-CGI-B.png|center|top|450px|border]]
|}
</center>

L'interface BackupPC est maintenant en français.

[[Image:012-BPC-CGI-C.png|center|700px|border]]

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Actuellement, le paramètre <code>Language</code> s'applique à l'interface CGI seulement. Les fichiers journaux et les autres textes sont toujours en anglais.


'''''Format de la date pour l'interface CGI'''''

La valeur '''1''' utilise des dates de type US ''(MM/DD)'', la valeur '''2''' utilise le format AAAA-MM-JJ complet et '''0''' les dates internationales ''(JJ/MM)''.

<center>[[Image:012-BPC-CGI-D.png|right|700px|border]]</center>

* On clique: '''Modifier la configuration > onglet CGI.
* On veut un affichage AAAA-MM-JJ, on entre '''2''' à la variable <code>CgiDateFormatMMDD</code> et on clique '''Sauvegarder''' pour enregistrer ce nouveau paramètre.
<br>
<br>
<br>
<br>
<br>

=== Paramètres de sauvegarde ===
'''''CompressLevel''''' ''(Niveau de compression)''

<center>[[Image:013-BPC-ParamsDeSauvegarde.png|right|700px|border]]</center>
* Il n'y a rien à faire, sauf peut-être, le niveau de compression des sauvegardes; le défaut de 3 est très suffisant.<br>- Il ne faut pas oublier que la compression requière une assez grande partie du temps CPU.<br>- Il n'y a presque rien à gagner à changer le niveau de compression.
* Si on a modifié un paramètre sur cette page, on clique '''Sauvegarder'''.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

=== Courriel ===
<center>[[Image:014-BPC-Courriel-A.png|right|700px|border]]</center>

'''''EMailNotifyMinDays <code>0.97</code>'''''

Période minimale entre les courriels consécutifs à un seul utilisateur. Ce paramètre tente de garder les courriels gênants pour les utilisateurs à un niveau raisonnable. La vérification du courriel est effectuée tous les soirs, de sorte que ce nombre est effectivement arrondi. ''&nbsp;&nbsp;(<code>0.97</code> signifie qu'un utilisateur ne recevra jamais de courriel plus d'une fois tous les '''1''' jour.)''

'''''EMailFromUserName backuppc'''''

Expéditeur du courriel. Selon le gestionnaire de messagerie de BackupPC, il s'agit d'un nom complet ''(backuppc)'' ou d'un nom complet qualifié ''(backuppc@mondomaine.com)''.

'''''EMailAdminUserName <code>admin</code>'''''

Adresse de destination d'un utilisateur administratif qui recevra un courriel tous les soirs avec les avertissements et les erreurs. S'il n'y a pas d'avertissement ou d'erreur, aucun courriel ne sera envoyé. Selon le gestionnaire de messagerie de BackupPC, il s'agit d'un nom complet ''(admin)'' ou d'un nom complet qualifié ''(admin@FQDN)''.

'''''EMailUserDestDomain <code>@micronator.org</code>'''''

Nom du domaine de destination pour les courriels envoyés aux utilisateurs. Par défaut, il est vide et signifie que le courriel est envoyé à des adresses simples et non qualifiées. Sinon, définissez ce paramètre avec le domaine de destination, par exemple:

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Avec les paramètres <code>$Conf{EMailAdminUserName}</code> = '''admin''' et <code>$Conf{EMailUserDestDomain}</code> = '''@micronator.org''' dans le fichier <code>/var/lib/BackupPC/etc/config.pl</code>, le courrier électronique sera envoyé à: <code>admin@micronator.org</code>.

* ''Sauvegarder''.


'''Vérification du courriel'''

Pour vérifier que BackupPC peut exécuter <code>sendmail</code> et envoyer correctement le courrier électronique, vous pouvez lui demander de vous envoyer un courriel de test.

On devient l'usager '''backuppc'''>.
# su -s /bin/bash backuppc

On envoie le courriel de test.
# /usr/share/BackupPC/bin/BackupPC_sendEmail -u admin@micronator.org

<center>
{| style="width: 80%;"
|- style="vertical-align:top;"
|On vérifie le courrier d'admin.
||[[Image:015-BPC-VerficationDuCourriel.png|top|center|border|700px]]
|}
</center>

On se désengage de l'usager '''backuppc'''.
# exit

=== Horaire ===
<center>[[Image:016-BPC-Horaire.png|right|700px|border]]</center>

Cadre '''Sauvegardes Complètes'''

'''''FullPeriod <code>6.97</code>'''''

Période minimale en jours, entre les sauvegardes Complètes. Une vidange complète ne sera effectuée que si au moins ce délai s'est écoulé depuis la dernière sauvegarde Complète et, au moins <code>IncrPeriod</code> jours s'est écoulée depuis la dernière sauvegarde réussie.

Généralement, cette valeur est légèrement inférieure à un nombre entier de jours. Le temps pris pour la sauvegarde, plus la granularité de <code>WakeupSchedule</code> rendront l'intervalle de sauvegarde réel un peu plus long.

<div id="FillCycle"></div>
'''''FillCycle <code>1</code>'''''

Avec la version V4+, les sauvegardes Complètes/Incrémentielles sont dissociées de fusionnée/non-fusionnée.

Pour imiter le comportement de la version V3, si <code>FillCycle</code> est défini à zéro, alors fusionnée/non-fusionnée continuera à s'associer à Complète/Incrémentielle: les sauvegardes Complètes seront fusionnées et les sauvegardes Incrémentielles seront non fusionnées. ''(Toutefois, la sauvegarde la plus récente est toujours fusionné, qu'elle soit Complète ou Incrémentielle.)'' La valeur '''0''' est le paramètre recommandé pour simplifier les choses; vu que l'expiration de la sauvegarde est en fait basée sur fusionnée/non-fusionnée ''(non pas sur Complète/Incrémentielle)'' en les conservant ainsi synchronisées, facilite alors la compréhension des paramètres d'expiration.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Si vous envisagez d'effectuer uniquement des sauvegardes Incrémentielles ''(c'est-à-dire: <code>FullPeriod</code> est défini à une très grande valeur)'', vous devez définir <code>FillCycle</code> à quelle fréquence vous voulez qu'une sauvegarde stockée soit fusionnée. Par exemple, si <code>FillCycle</code> est défini à 7, toutes les 7e sauvegardes seront fusionnées ''(que la sauvegarde correspondante soit Complète ou non)''.

Il existe deux raisons pour lesquelles vous voulez un paramètre <code>FillCycle</code> différent de '''0''' lorsque vous ne faites que des Incrémentielles:

* Une sauvegarde fusionnée est un point de départ pour la fusion des deltas lorsque vous restaurez ou examinez des sauvegardes. Avoir périodiquement des sauvegardes fusionnées rend plus efficace l'examen ou la restauration d'anciennes sauvegardes.
* Plus important encore, dans V4+, la suppression des sauvegardes se fait en fonction de fusionnée/non-fusionnée et non pas si la sauvegarde d'origine était Complète/Incrémentielle. S'il n'y a pas de sauvegardes fusionnées ''(autres que la plus récente)'', alors <code>FullKeepCnt</code> et les paramètres qui y sont associés n'auront aucun effet.

# Si <code>FillCycle</code> = 1, toutes les sauvegardes seront Fusionnées et le demeureront mais, leur début sera légèrement plus long et on verra "début de la sauvegarde" s'afficher pour un certain temps supplémentaire.
# Si BackupPC doit faire du nettoyage à cause d'un dépassement du nombre de sauvegardes à conserver, le message de droite s'affichera après celui de gauche.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:017-BPC-FillCycle1-A.png|center|top|450px|border]]
||[[Image:017-BPC-FillCycle1-B.png|center|top|450px|border]]
|}
</center>


'''''FullKeepCnt <code>1</code>'''''

Nombre de sauvegardes Fusionnées à conserver ''(le nom porte à confusion)''. Doit être > = 1.

À partir de V4+, la suppression des sauvegardes se fait en fonction de fusionnée/non-fusionnée et non plus si la sauvegarde d'origine était Complète ou Incrémentielle. Pour des raisons de compatibilité avec les anciennes versions, ce paramètre continue d'être appelé <code>FullKeepCnt</code> plutôt que <code>FilledKeepCnt</code>. Si <code>FillCycle</code> est à '''0''', alors, les sauvegardes Complètes continueront d'être Fusionnées; donc, les termes sont interchangeables. Pour les sauvegardes V3, les paramètres d'expiration ont leur signification d'origine.

Chaque fois qu'une sauvegarde Complète se termine avec succès, la plus ancienne est supprimée. Si ce nombre est diminué, les anciennes sauvegardes en surplus seront supprimées.

'''''FullKeepCntMin <code>1</code>'''''

Les anciennes sauvegardes Complètes sont supprimées après <code>FullAgeMax</code> jours. Cependant, BackupPC conserve au moins <code>FullKeepCntMin</code> sauvegardes Complètes, quel que soit leur âge.

On garde au moins 1 sauvegarde Complète.

'''''FullAgeMax <code>180</code>'''''

<code>FullAgeMax</code> sera augmenté à <code>FullKeepCnt</code> fois <code>FullPeriod</code> si <code>FullKeepCnt</code> spécifie suffisamment de sauvegardes Complètes pour dépasser <code>FullAgeMax</code>.



Cadre '''Sauvegardes Incrémentielles'''

<center>[[Image:018-BPC-SauvegardesIncrémentielles.png|right|700px|border]]</center>

'''''IncrPeriod <code>0.97</code>'''''

Période minimale en jours entre les sauvegardes Incrémentielles ''(une sauvegarde Incrémentielle demandée par l'utilisateur sera effectuée à tout moment, à sa demande)''.

Généralement, cette valeur est légèrement inférieure à un nombre entier de jours. Le temps pris pour la sauvegarde, plus la granularité de <code>WakeupSchedule</code> rendront l'intervalle de sauvegarde réel un peu plus long.

'''''IncrKeepCnt <code>6</code>'''''

Nombre de sauvegardes Incrémentielles à conserver. Doit être > = 1.

Chaque fois qu'une sauvegarde Incrémentielle se termine avec succès et que le compte est > que <code>IncrKeepCnt</code>, la plus ancienne est supprimée. Si ce nombre est diminué, les anciennes sauvegardes Incrémentielles en surplus seront supprimées.

'''''IncrKeepCntMin <code>1</code>'''''

Garder au moins 1 sauvegarde Incrémentielle.

'''''IncrAgeMax <code>30</code>'''''

Les sauvegardes Incrémentielles très anciennes sont supprimées après <code>IncrAgeMax</code> jours. Cependant, BackupPC conserve au moins <code>IncrKeepCntMin</code> sauvegardes Incrémentielles, quel que soit leur âge.



Cadre '''Suspension'''

<center>[[Image:019-BPC-CadreSuspension.png|right|700px|border]]</center>

'''''BackupsDisable <code>0</code>'''''

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;On peut désactiver en mettant à 1 et activer les sauvegardes dans la configuration des machines clientes lors de leur création.

Désactive toutes les sauvegardes Complètes et Incrémentielles. Ce paramètre est utile pour un client qui n'est plus sauvegardé ''(par exemple: une machine qui est retirée)'' mais, vous souhaitez conserver les dernières sauvegardes disponibles pour la navigation ou la restauration vers d'autres machines.

Ce paramètre peut prendre trois valeurs:

* 0 - Les sauvegardes sont activées.
* 1 - Ne pas faire de sauvegardes régulières sur ce client. Les sauvegardes demandées manuellement''(via l'interface CGI)'' se produiront toujours.
* 2 - Ne faire aucune sauvegarde sur ce client. Les demandes manuelles des sauvegardes ''(via l'interface CGI)'' seront ignorées.

'''''BlackoutBadPingLimit <code>3</code>'''''

Si le serveur ne répond pas après le 3e ping, abandonner.

'''''BlackoutGoodCnt <code>7</code>'''''

Les PCs qui sont toujours, ou souvent, présents sur le réseau peuvent être sauvegardés après les heures régulières afin de réduire la charge sur le PC, le réseau et le serveur pendant les heures de travail. Pour chaque PC, le nombre de pings consécutifs est maintenu. Une fois qu'un PC a au moins <code>BlackoutGoodCnt</code> bons pings consécutifs, il est sujet à un "blackout" et non sauvegardé pendant les heures et les jours spécifiés par <code>BlackoutPeriods</code>.

Pour permettre le redémarrage périodique d'un PC ou d'autres brèves périodes où un PC n'est pas sur le réseau, un nombre de pings négatifs consécutifs est autorisé avant que le nombre de bons ping soit réinitialisé. Ce paramètre est <code>BlackoutBadPingLimit</code>.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Les bons et mauvais pings ne se produisent pas avec le même intervalle. Si une machine est toujours présente sur le réseau, un ping ne sera envoyé qu'une fois tous les <code>IncrPeriod</code> ''(par exemple: une fois par jour)''. Donc, un paramètre pour <code>BlackoutGoodCnt</code> de 7 signifie qu'il faudra environ 7 jours pour qu'une machine soit soumise à un "blackout". D'un autre côté, si un ping échoue, il sera réessayé à chaque fois que BackupPC se réveillera, par exemple, toutes les heures ou toutes les deux heures. Donc, un paramètre pour <code>BlackoutBadPingLimit</code> de 3 signifie que le PC perdra son état de "blackout" après 3-6 heures d'indisponibilité.

Pour désactiver la fonction de "blackout", configurez <code>BlackoutGoodCnt</code> sur une valeur négative. Une valeur de 0 rendra toutes les machines sujettes à un "blackout". Mais, si vous ne voulez pas faire de sauvegardes pendant la journée, il serait plus facile de simplement mettre <code>WakeupSchedule</code> à un horaire restreint.


'''''BlackoutPeriods'''''

Une ou plusieurs périodes d'interdiction peuvent être spécifiées. Si un client est sujet à un "blackout", aucune sauvegarde régulière ''(non manuelle)'' ne sera démarrée pendant l'une de ces périodes. Les paramètres <code>hourBegin</code> et <code>hourEnd</code> spécifient les heures à partir de minuit et <code>weekDays</code> est une liste des jours de la semaine où '''0''' est dimanche, '''1''' lundi, etc.



Cadre '''Divers'''

<center>[[Image:020-BPC-CadreDivers.png|right|700px|border]]</center>

'''''RestoreInfoKeepCnt <code>10</code>'''''

Nombre de journaux de restauration à conserver. BackupPC mémorise les informations de chaque demande de restauration. Ce nombre, par client, sera conservé avant que les plus anciens ne soient purgés.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Les fichiers/répertoires transmis via les téléchargements ''Zip'' ou ''Tar'' ne sont pas considérés comme des restaurations. Seule la première option de restauration compte pour les restaurations consignées.

'''''ArchiveInfoKeepCnt <code>10</code>'''''

Nombre de journaux d'archives à conserver. BackupPC mémorise les informations sur chaque requête de sauvegarde. Ce nombre d'archives du journal de chaque client sera conservé avant que les plus anciennes ne soient purgées.

'''''BackupZeroFilesIsFatal'''''

Une sauvegarde d'un partage ayant zéro fichier est considérée comme fatale. Ce paramètre est utilisé pour attraper diverses erreurs qui surviennent lorsque Xfer ne sauvegarde aucun fichier. Si vous avez des partages qui peuvent être vides ''(et donc une sauvegarde vide est valide)'', vous devez mettre cet indicateur à '''0''' ''(décoché)''.

* ''Sauvegarder''


=== Serveur ===

<center>[[Image:021-BPC-Serveur.png|right|700px|border]]</center>

'''''MaxOldLogFiles <code>14</code>'''''

Nombre maximal de fichiers journaux que BackupPC conserve dans le répertoire des journaux. L'âge de ces fichiers est mis à jour tous les soirs. Un paramètre de <code>14</code> signifie que le répertoire du journal contiendra environ 2 semaines de vieux fichiers journaux: les fichiers LOG, LOG.0, LOG.1, ... LOG.14 ''(sauf le journal d'aujourd'hui, ces fichiers auront une extension de ".z" si la compression est activée)''.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Si vous diminuez ce nombre après que BackupPC ait roulé un certain temps, vous devrez supprimer manuellement les anciens fichiers journaux.

* ''Sauvegarder''


=== Xfer ===

{| style="float: right; margin-left:0.5em;"
|-
| style="vertical-align: top;" |[[File:022-BPC-Xfer-B.png|150px|border]]
|}
{| style="float: right; margin-left:1em;"
|-
| style="vertical-align: top;" |[[File:022-BPC-Xfer-A.png|700px|border]]
|}

'''''XferLogLevel <code>0</code>'''''

Niveau de verbosité dans les fichiers journaux Xfer.

* '''0''' signifie être calme,
* '''1''' donnera une ligne par fichier,
* '''2''' montrera également les fichiers sautés par les incrémentielles,
* des valeurs plus élevées donnent plus de résultats.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Pour le déverminage, un niveau de '''8''' pourrait vous orienter vers une solution à un problème donné.

* ''Sauvegarder''


=== Paramètres ssh ===

<center>[[Image:023-BPC-PortSSH.png|right|700px|border]]</center>
'''''Port SSH <u>du Serveur SME</u> <code>2222</code>'''''

Dans le gestionnaire Server Manager, nous avons déjà configuré le Port TCP pour l'accès SSH à '''2222'''.

Il faut ajuster le port SSH pour les communications de BackupPC vers les Serveurs SME clients.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

<div id="Fichier de configuration SSH de BackupPC"></div>
'''''Fichier de configuration SSH <u>de BackupPC</u>'''''

Le répertoire pour tout ce qui concerne SSH est: <code>/var/lib/BackupPC/.ssh</code>.

Nous créons un fichier pour spécifier les paramètres de configuration SSH de BackupPC.
# touch /var/lib/BackupPC/.ssh/config

On ajuste le propriétaire et le groupe du fichier.
# chown backuppc:backuppc /var/lib/BackupPC/.ssh/config

On ajuste les droits.
# chmod 640 /var/lib/BackupPC/.ssh/config

'''Spécification du port SSH'''

Il existe plusieurs manières de spécifier ce port mais, la plus efficace est celle ci-dessous.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|Host *

&nbsp;&nbsp;&nbsp;&nbsp;Port 2222
|}

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Ce paramètre, dans le fichier de configuration SSH de BackupPC, aura préséance sur tous les autres paramètres de BackupPC spécifiant le port SSH.

Nous aurions pu utiliser les expressions suivantes pour spécifier le nom de l'hôte. Pour plus d'information, voir: https://www.digitalocean.com/community/tutorials/how-to-configure-custom-connection-options-for-your-ssh-client.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|Host 192.168.1.33,192.168.1.149

&nbsp;&nbsp;&nbsp;&nbsp;Port 2222
|}

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|Host 192.168.1.0/24

&nbsp;&nbsp;&nbsp;&nbsp;Port 2222
|}

On peut spécifier des hôtes utilisant des ports différents.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|Host 192.168.1.33

&nbsp;&nbsp;&nbsp;&nbsp;Port 2222

Host 192.168.1.144

&nbsp;&nbsp;&nbsp;&nbsp;Port 3333
|}


[[Image:Icone-SeTirerDembarrasAPT.png|20px]]&nbsp;&nbsp;Sur notre réseau, tous les Serveurs SME utilisent le port SSH '''2222''' alors, <u>pour notre réseau</u>, on spécifie le port '''2222'''.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Prendre tout le contenu de l'encadré pour générer le fichier <code>config</code>.

cat > /var/lib/BackupPC/.ssh/config <<'EOT'
<nowiki># Michel-André: 2018-04-24_11h04 HNE</nowiki>
<nowiki># Spécification du port SSH à être utilisé par BackupPC</nowiki>
Host *
<span style="color:red">Port</span> 2222

EOT


[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il faut que le mot <span style="color:red">Port</span> soit <u>au moins à un espace</u> de la marge de gauche.


On vérifie les droits, le propriétaire et le groupe.
# ls -ls /var/lib/BackupPC/.ssh/config

0 -<span style="color:red">rw-r-----</span> 1 <span style="color:red">backuppc backuppc</span> 120 28 avril 10:52 /var/lib/BackupPC/.ssh/config


=== Propriétés DB ===
Il n'existe que trois propriétés DB que vous pouvez modifier:

* '''''status''''' <code>[enabled | disabled]</code><br/>Voulez-vous que le service démarre automatiquement à l'amorçage du serveur?<br><br>
*
* '''''examples''''' <code>[enabled | disabled]</code><br/>Souhaitez-vous que les exemples de fichiers de configuration soient ajoutés à nouveau s'ils ont été supprimés?<br><br>
*
* '''''sudo'''''<br/>Liste des commandes que l'usager '''backuppc''' pourra exécuter en tant que root en utilisant <code>sudo</code>. La valeur par défaut est: <code>/usr/bin/rsync,/bin/gtar</code>.<br><br>
*

Affichage des propriétés du service '''backuppc'''.
# db configuration show backuppc

backuppc=service
examples=<span style="color:red">enabled</span>
status=<span style="color:red">enabled</span>
sudo=<span style="color:red">/usr/bin/rsync,/bin/gtar</span>

Après avoir modifier une de ces propriétés, vous devez en signaler la mise à jour en lançant la commande ci-dessous.
# signal-event backuppc-update


'''Utilitaire sudo'''

L'utilitaire <code>sudo</code><ref name="ftn4">'''sudo''': ''Référence'': [https://fr.wikipedia.org/wiki/Sudo https://fr.wikipedia.org/wiki/Sudo].</ref> est une commande informatique utilisée principalement dans les systèmes d'exploitation de type Linux/Unix. ''(abréviation de '''s'''ubstitute '''u'''ser '''do''': "exécuter en se substituant à l'utilisateur".)''

Cet utilitaire permet, à un utilisateur autorisé, d'exécuter une commande en tant que superutilisateur ''(root)'' ou d'un autre utilisateur tel que spécifié par la politique de sécurité ''(fichier de configuration)''.

Dans notre cas particulier sudo offre, entre autre à l'usager '''backuppc''', une liste de commandes que ce dernier pourra exécuter en tant que root.

Par défaut, cette liste comprend les commandes suivantes:

* /usr/bin/rsync
* /bin/gtar

'''''Fichier de configuration de sudo'''''

L'utilitaire sudo est un cas particulier car, sa configuration se trouve dans le fichier <code>/etc/sudoers</code>.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Pour modifier ce fichier de configuration, il faut absolument utiliser l'éditeur <code>visudo</code>.

Lancement de l'éditeur de sudo.

{| class="wikitable" style="width: 50%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|visudo
|}

'''''Erreur en modifiant le fichier <code>/etc/sudoers</code> avec <code>visudo</code>'''''

Si vous avez fait une erreur lors de la modification du fichier, un message d'erreur de syntaxe s'affichera à la sortie de <code>visudo</code> et l'invite demandera ce que <code>visudo</code> devrait faire.

{| style="background: {{{color|#FFEED9}}}; border: 1px dashed; width:50%"
|<div><span style="font-family:Courier New;">visudo: >>> /etc/sudoers: syntax error near line 15 <<<<br>
&nbsp;Options are:<br>
&nbsp;&nbsp;&nbsp;(e)dit sudoers file again<br>
&nbsp;&nbsp;&nbsp;e(x)it without saving changes to sudoers file<br>
&nbsp;&nbsp;&nbsp;(Q)uit and save changes to sudoers file (DANGER!)
</div>
|}

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;La meilleure réponse est "x", sans guillemets, pour quitter <code>visudo</code> sans sauvegarder les changements apportés.

=== Réveil par le réseau ''(WOL)''<ref name="ftn5">'''réveil par le réseau''': Fonction permettant de mettre sous tension à distance des ordinateurs personnels, à partir de commandes émises par un serveur de réseau local.

Note: La fonction réveil par le réseau permet, à l'aide d'un serveur, d'effectuer des travaux de télémaintenance sur des ordinateurs personnels, lorsque leurs utilisateurs sont absents et qu'ils ont fermé leurs appareils.<br>''Référence'': [http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8370856 http://www.granddictionnaire.com/ficheOqlf.aspx?Id_Fiche=8370856].</ref> ===
À titre d'exemple, vous voulez être en mesure de réveiller une machine si la carte réseau de celle-ci possède l'option réveil par le réseau ''(Wake On Lan)''.

Modifier la propriété <code>sudo</code> et ajouter la commande <code>/sbin/ether-wake</code>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki>#</nowiki> config setprop backuppc sudo `config getprop backuppc sudo`,/sbin/ether-wake
|}

Signaler le changement...
Modifier la propriété <code>sudo</code> et ajouter la commande <code>/sbin/ether-wake</code>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|<nowiki>#</nowiki> signal-event backuppc-update
|}

... puis ajoutez simplement un script, tel que ci-dessous, à votre commande <code>pré-sauvegarde</code> ou à votre commande <code>ping</code>.

{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
<nowiki>#!/bin/sh</nowiki><br>
<nowiki># Set the mac address for each host</nowiki><br>
<nowiki>host1_mac=<mac address></nowiki><br>
<nowiki>host1_name=<host name></nowiki><br>
<nowiki>host2_mac=<mac address></nowiki><br>
<nowiki>host2_name=<hmac addresshost namemac addresshost name></nowiki><br>
<nowiki># How long does the host take to boot</nowiki><br>
<nowiki>boottime=120</nowiki><br>
<nowiki># Which interface to send the WoL packets out of</nowiki><br>
<nowiki>interface=eth0</nowiki><br>
<nowiki># Function to check if the host pings</nowiki><br>
<nowiki>pingcheck()</nowiki><br>
<nowiki>{</nowiki><br>
<nowiki>ping -w 5 -c 2 $1</nowiki><br>
<nowiki>export pingstatus=$?</nowiki><br>
<nowiki>}</nowiki><br>
<nowiki>case $1 in</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host1)</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo etherwake -i $interface $host1_mac</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep $boottime</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pingcheck $host1_name</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $pingstatus</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host2)</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sudo etherwake -i $interface $host2_mac</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep $boottime</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pingcheck $host2_name</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit $pingstatus</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo "Unknown machine $1"</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit 1</nowiki><br>
<nowiki>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;</nowiki><br>
<nowiki>esac</nowiki>
|}

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;IMPORTANT Si vous utilisez l'usager administrateur '''backuppc''' par défaut, vous devrez utiliser le chemin complet pour les commandes ci-dessus.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Les scripts ne doivent pas être placés dans <code>/etc/BackupPC</code> car les autorisations seront remplacées. On peut les insérer dans notre répertoire de stockage de scripts: <code>/var/lib/BackupPC/script</code>.

= Configuration du gabarit localserver-template =

Pour l'installation, nous avons utilisé la contribution BackupPC4 et un ajout pour les Serveurs SME: <code>smeserver-BackupPC</code> qui inclut <code>smeserver-remoteuseraccess</code>.

* <code>smeserver-BackupPC</code><br>Crée les gabarits <code>localserver-template</code> et <code>smeserver-template</code> utilisés lors de la création de machines pour les Serveurs SME dont on veut faire des sauvegardes.

* <code>smeserver-remoteuseraccess</code><br>Sert à la connexion ssh vers les Serveurs SME.


Nous allons ajuster certains paramètres du gabarit de base <code>localserver-template</code>.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Lorsque nous utiliserons ce gabarit pour créer une nouvelle machine <u>pour le serveur hôte de BackupPC</u>, il ne sera pas nécessaire de configurer la nouvelle machine car le gabarit s'en aura chargé.

=== Paramètres de sauvegarde ===
Choisir l''''Hôte > localserver-template > Modifier la configuration > Paramètres de sau­ve­garde'''.


<center>[[Image:024-BPC-ParamsDeSauvegarde.png|right|700px|border]]</center>

'''''DumpPreUserCmd'''''

{| class="wikitable"
|-style="width:600;"
|<pre>/var/lib/BackupPC/script/pre-sauvegarde.sh $host</pre>
|}

'''''DumpPostUserCmd'''''

{| class="wikitable"
|-style="width:600;"
|<pre>/var/lib/BackupPC/script/post-sauvegarde.sh $host</pre>
|}

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Pour plus d'information, voir le paragraphe: [[#Scripts pré/post-sauvegarde]].
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<center>[[Image:025-BPC-BlackoutPeriods.png|right|700px|border]]</center>
<span id="BlackoutPeriods"></span>
'''''BlackoutPeriods'''''

* Une ou plusieurs périodes d'interdiction peuvent être spécifiées.
* Aucune sauvegarde régulière ''(non manuelle)'' ne sera démarrée pendant l'une de ces périodes.
* <code>hourBegin</code> et <code>hourEnd</code> spécifient les heures à partir de minuit et <code>weekDays</code> est une liste des jours de la semaine où '''0''' est dimanche, '''1''' est lundi, etc.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Nous ne voulons pas que le serveur se sauvegarde lui-même pendant qu'il sauvegarde un autre serveur et vu que les machines des autres serveurs auront une période d'interdiction de <code>7.0 - 19.5</code>, on échange donc ces valeurs par défaut en spécifiant <code>19.5 - 7.0</code> pour la machine hôte de BackupPC. Avec cet échange, la période de sauvegarde du serveur BackupPC sera exlusive de la période de sauvegarde des autres serveurs.

* ''Sauvegarder''.

=== Courriel ===

<center>[[Image:026-BPC-Courrier.png|right|700px|border]]</center>
Ajustez vers quelle adresse courriel vous voulez envoyer les notifications de BackupPC.

* ''Sauvegarder''.
<br>
<br>
<br>
<br>
<br>
<br>

=== Horaire ===

<center>[[Image:027-BPC-Horaire.png|right|700px|border]]</center>

'''''FillCycle <code>1</code>'''''

Pour plus d'information sur cette variable, voir ci-dessus: [[#FillCycle]].

'''''BackupsDisable <code>1</code>'''''

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;On activera les sauvegardes seulement après la création d'une nouvelle machine.

'''Sauvegardes du serveur hôte de BackupPC'''

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Vu que le serveur hôte de BackupPC ne sert qu'à faire des sauvegardes et qu'il n'est pas nécessaire de le sauvegarder à toutes les semaines ''(6.97 jours)'', nous pourrions ajuster <code>FullPeriod</code> pour une sauvegarde Complète mensuelle seulement, en spécifiant <code>FullPeriod</code> à 30.5 jours. Nous pourrions aussi ajuster <code>IncrPeriod</code> pour une sauvegarde Incrémentielle hebdomadaire seulement, en spécifiant <code>IncrPeriod</code> à '''6.97''' jours.

* ''Sauvegarder''.
<br>
<br>
<br>
<br>

=== Xfer ===

[[Image:028-BPC-Xfer-1.png|top|right|700px|border]]
<span id="XferLogLevel"></span>
'''''XferLogLevel <code>0</code>'''''

Niveau de verbosité dans les fichiers journaux Xfer.
* '''0''' signifie être calme,
* '''1''' donnera une ligne par fichier,
* '''2''' montrera également les fichiers sautés par les incrémentielles.

Des valeurs plus élevées donneront plus de résultats.
* Une verbosité de '''8''' servira pour le débogage.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

'''''BackupFilesExclude'''''

Les sous-répertoires de <code>/var/lib/BackupPC</code> sont les suivants:

* '''''cpool'''''&nbsp;-&nbsp;Stockage de tous les fichiers compressés à partir des sauvegardes.
* '''''etc'''''&nbsp;-&nbsp;Stockage des fichiers de configuration.
* '''''log'''''&nbsp;-&nbsp;Stockage des journaux des sauvegardes/restaurations.
* '''''lost+found'''''&nbsp;-&nbsp;Les fichiers qui seraient normalement perdus à cause d'une corruption de répertoire seraient liés dans ce répertoire.
* '''''mes_restaurations'''''&nbsp;-&nbsp;Répertoire de stockage des fichiers TAR pour les restaurations. Voir: [[#On crée un répertoire de stockage pour nos futurs fichiers TAR]]
* '''''pc'''''&nbsp;-&nbsp;Les sauvegardes de chaque $hôte sont stockées sous ce répertoire sous pc/$hôte.
* '''''pool'''''&nbsp;-&nbsp;Tous les fichiers non compressés provenant des sauvegardes sont stockés dans ce répertoire.
* '''''script'''''&nbsp;-&nbsp;Contient nos scripts de pré/post-sauvegarde.
* '''''.ssh'''''&nbsp;-&nbsp;Répertoire des fichiers relatifs à SSH pour BackupPC. Voir: [[#Fichier de configuration SSH de BackupPC]].


[[Image:028-BPC-Xfer-2.png|top|right|700px|border]]
[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Le gabarit par défaut de '''local-smeserver''' exclut le répertoire <code>/var/lib/BackupPC</code> des sauvegardes.


Lorsqu'on sauvegarde le serveur hôte de BackupPC <u>par lui-même</u>, nous voulons inclure certains sous-répertoires de <code>/var/lib/BackupPC</code> et en exclure d'autres.

* On détruit donc l'exclusion complète:<br><nowiki>&nbsp;&nbsp;*</nowiki> Vis-a-vis <code>/var/lib/BackupPC</code>, on clique <code>Détruire</code>.
<br>
<br>
<br>
<br>
<br>
<br>

[[Image:028-BPC-Xfer-3.png|top|right|700px|border]]
* On remplace l'exclusion complète par les exclusions suivantes seulement:<br>&nbsp;&nbsp;<nowiki>*</nowiki> '''Ajouter''' et on entre les répertoires suivants.
# ''/var/lib/BackupPC/cpool''
# ''/var/lib/BackupPC/mes_restaurations''
# ''/var/lib/BackupPC/pc''
# ''/var/lib/BackupPC/pool''.


On exclut aussi les fichiers suivants des sauvegardes:

* '''''/etc/fstab'''''&nbsp;-&nbsp;Sert pour le montage des disques.
* '''''/etc/udev/rules.d/70-persistent-net.rules'''''&nbsp;-&nbsp;Relie les a­dres­ses MAC des cartes réseau à leur dispositif <code>eth0</code> et <code>eth1</code>.

# ''/etc/fstab''
# ''/etc/udev/rules.d/70-persistent-net.rules''

* ''Sauvegarder''.


[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Si on sauvegarde l'hôte de BackupPC <u>à l'aide d'un autre serveur BackupPC</u>, on n'exclut pas le répertoire <code>/var/lib/BackupPC</code> ni aucun de ses sous-répertoires.


<center>'''Notre gabarit localserver-template est prêt à être utilisé pour la création de la machine hôte de BackupPC.'''</center>


= Configuration du gabarit smeserver-template =

Nous allons ajuster certains paramètres du gabarit de base '''smeserver-template'''.

Lorsque nous utiliserons ce gabarit pour créer de nouvelles machines pour les Serveurs SME, il ne sera pas nécessaire de configurer celles-ci car, le gabarit s'en sera chargé.

=== Paramètres de sauvegarde ===

Choisir l''''Hôte > smeserver-template > Modifier la configuration > Paramètres de sauvegarde'''.


<center>[[Image:029-BPC-SmeserverTemplate.png|right|700px|border]]</center>

'''''DumpPreUserCmd'''''

{| class="wikitable"
|-style="width:600;"
|<pre>/var/lib/BackupPC/script/pre-sauvegarde.sh $host</pre>
|}

'''''DumpPostUserCmd'''''

{| class="wikitable"
|-style="width:600;"
|<pre>/var/lib/BackupPC/script/post-sauvegarde.sh $host</pre>
|}

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Pour plus d'information, voir [[#Scripts pré/post-sauvegarde]].
<br>
* ''Sauvegarder''.
<br>
<br>
<br>
<br>
<br>

=== Courriel ===

<center>[[Image:026-BPC-Courrier.png|right|700px|border]]</center>
Ajustez vers quelle adresse courriel vous voulez envoyer les notifications de BackupPC.

* ''Sauvegarder''.
<br>
<br>
<br>
<br>
<br>
<br>
<br>

=== Horaire ===

<center>[[Image:027-BPC-Horaire.png|right|700px|border]]</center>

'''''FillCycle <code>1</code>'''''

Pour plus d'information sur cette variable, voir ci-dessus: [[#FillCycle]].

'''''BackupsDisable <code>1</code>'''''

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;On <u>désactive</u> les sauvegardes lors de la création d'une nouvelle machine car, une sauvegarde pourrait débuter avant que la configuration de celle-ci soit totalement terminée.

* Cette désactivation n'empêche pas les sauvegardes manuelles.

* On activera les sauvegardes automatiques seulement après la première sauvegarde et après avoir vérifier que toutes les configurations fonctionnent correctement.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

<center>[[Image:027-BPC-Horaire-A.png|right|700px|border]]</center>
'''''BlackoutPeriods'''''

Vu que les usagers sont au travail du lundi au vendredi et qu'ils utilisent les Serveurs SME, on ne veut pas lancer de sauvegardes sur les serveurs entre 07h00 et 19h30.

* On ajuste <code>BlackoutPeriods</code> pour bloquer les sauvegardes automatiques durant les heures de travail.

* ''Sauvegarder''.
<br>

=== Xfer ===

[[Image:028-BPC-Xfer-1.png|top|right|700px|border]]

'''''XferLogLevel <code>0</code>'''''

Niveau de verbosité dans les fichiers journaux Xfer.
* '''0''' signifie être calme,
* '''1''' donnera une ligne par fichier,
* '''2''' montrera également les fichiers sautés par les incrémentielles.

Des valeurs plus élevées donneront plus de résultats.
* Une verbosité de '''8''' servira pour le débogage.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

[[Image:028-Xfer-A.png|top|right|700px|border]]

On exclut les fichiers suivants des sauvegardes:

# ''/etc/fstab''
# ''/etc/udev/rules.d/70-persistent-net.rules''

* ''Sauvegarder''.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

<center>'''Notre gabarit smeserver-template est prêt à être utilisé pour la création de machines BackupPC afin de sauvegarder des Serveurs SME.'''.</center>


= Serveur hôte de BackupPC =

=== Création de la machine hôte ===

Pour le serveur roulant BackupPC, on crée un machine en utilisant le gabarit '''localserver-template'''.

'''Serveur > Modifier la configuration >''' ''onglet'' '''Machines > Ajouter''' '''>''' ''host:'' '''127.0.0.1=localserver-template >''' ''user:'' '''admin > Sauvegarder'''.

<center>
{| {| class="wikitable" style="width: 90%;"
|- style="vertical-align:top;"
|[[Image:031-BPC-CreationDeLaMachie.png|center|top|650px|border]]
||[[Image:031-BPC-CreationDeLaMachie.png-A.png|center|top|350px|border]]
|}
</center>

La nouvelle machine, hôte de BackupPC, a été crée.

=== Page d'accueil de la nouvelle machine ===
# Sous '''Hôtes''', on choisit le nom de notre nouvelle machine '''127.0.0.1''' ''(hôte de BackupPC - 192.168.1.33''). La page d'accueil s'affiche.
# [[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Les liens '''Files actuelles''', '''Documentation''', '''Wiki''' et '''Homepage''' n'apparaissent seulement que sur la page d'accueil de BackupPC.

<center>
{| {| class="wikitable" style="width: 85%;"
|- style="vertical-align:top;"
|[[Image:032-BPC-PageAccueil-A.png|center|top|800px|border]]
||[[Image:032-BPC-PageAccueil-B.png|center|top|200px|border]]
|}
</center>

=== Vérification de la configuration ===

# Modifier la configuration.
# Paramètres de sauvegarde; on vérifie la pré-commande et la post-commande.
# Courriel.
# Sauvegardes complètes.

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:033-BPC-VerifConfig-A.png|center|top|150px|border]]
||[[Image:033-BPC-VerifConfig-B.png|center|top|350px|border]]
||[[Image:033-BPC-VerifConfig-C.png|center|top|250px|border]]
||[[Image:033-BPC-VerifConfig-D.png|center|top|250px|border]]
|}
</center>


# Sauvegardes Incrémentielles.
# Suspension
# BlackoutPeriods.
# Divers.
# Exclusions.

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:033-BPC-VerifConfig-E.png|center|top|175px|border]]
||[[Image:033-BPC-VerifConfig-F.png|center|top|175px|border]]
||[[Image:033-BPC-VerifConfig-G.png|center|top|250px|border]]
||[[Image:033-BPC-VerifConfig-H.png|center|top|175px|border]]
||[[Image:033-BPC-VerifConfig-J.png|center|top|175px|border]]
|}
</center>

<code>BackupsDisable</code> s'applique seulement aux sauvegardes automatiques. On peut quand même faire une sauvegarde manuelle pour vérifier que tout fonctionne correctement.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Lorsqu'on aura fait nos sauvegardes de test, on activera les sauvegardes automatiques en mettant <code>BackupsDisable</code> à <code>0</code>.

<center>'''Tout est prêt pour notre première sauvegarde.'''</center>


'''Sauvegarde automatique'''

<center>[[Image:034-BPC-ProchainReveil.png|right|700px|border]]</center>

Si nous avons créé et configuré le serveur hôte de BackupPC en dehors de ses heures d'interdiction ''(voir le paragraphe [[#BlackoutPeriods]])'', au prochain réveil de BackupPC, il exécutera automatiquement une première sauvegarde Complète de lui-même, sans que nous ayons à faire quoi que ce soit, si <code>BackupsDisable</code> est à <code>0</code> ''(sauvegardes automatiques activées)''.

C'est pour cette raison que nous avons mis <code>BackupsDisable</code> à <code>1</code> ''(sauvegardes automatiques désactivées)'' lors de la configuration du gabarit localserver-template.

=== Clé SSH publique de BackupPC ===
Avant de faire quoi que ce soit, on téléverse la clé SSH de BackupPC afin d'éviter le problème de rejet de connexion lors de la sauvegarde.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Si on lance une sauvegarde sans que le serveur à sauvegarder ait reçu la clé SSH de BackupPC, le serveur distant bloquera les futures tentatives de connexion.


'''Explication du blocage des futures tentatives de connexion'''

Sans la clé SSH, téléversée sur le serveur à sauvegarder et qui permet à BackupPC de se connecter sans utiliser de mot de passe, la sauvegarde tentera à plusieurs reprises de se connecter sans mot de passe et ainsi dépassera la limite de tentatives infructueuses de connexions fixée par le Serveur SME à sauvegarder.

Sans la clé SSH sur le serveur à sauvegarder, lors de toute sauvegarde, BackupPC émettra l'erreur suivante:

<center>
{| style="background: {{{color|#FFEED9}}}; border: 1px dashed; width:80%"
|- style="vertical-align:top;font-family: Courier New; text-align: center;"
|Got fatal error during xfer (rsync error: unexplained error (code 255) at io.c(629) [Receiver=3.0.9.12]).
|}
</center>

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Si le Serveur SME a déjà la contribution Fail2Ban installée, après <span style="color:purple"><u>3</u></span> tentatives de connexions infructueuses, il bannit pour <span style="color:purple"><u>30</u></span> jours l'adresse IP en question.


'''Téléversement de la clé SSH de BackupPC'''

Si nous n'avons pas déjà téléversé la clé SSH publique de BackupPC au paragraphe [[#Téléversement de la clé SSH publique de BackupPC]], <u>on le fait obligatoirement maintenant</u>.


'''Vérification du téléchargement de la clé publique'''

On ouvre une session PuTTY vers le Serveur SME hôte de BackupPC ''(192.168.1.33)''.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Ne pas utiliser l'adresse 127.0.0.1 car vous vous retrouveriez sur la station hôte de PuTTY.

On vérifie la présence de la clé publique de BackupPC.
cat /root/.ssh/authorized_keys2

<center>[[Image:034-BPC-CleSSH.png|center|700px|border]]</center>


=== Sauvegarde "Complète" de l'hôte BackupPC ===

Nous allons sauvegarder le Serveur SME roulant BackupPC et dont l'adresse IP est 192.168.1.33 ''(localhost - 127.0.0.1)''.


'''Lancement de la sauvegarde'''

On retourne à la page '''127.0.0.1 Accueil''' et on clique '''Démarrer la sauvegarde Complète'''.

[[Image:035-BPC-LancementDeLaSauvegarde.png|top|center|700px|border]]


# On confirme en cliquant '''Démarrer la sauvegarde complète'''.
# On retourne à la page d'accueil en cliquant le nom de notre machine i.e. '''127.0.0.1'''.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:035-BPC-LancementDeLaSauvegarde-A.png|center|top|450px|border]]
||[[Image:035-BPC-LancementDeLaSauvegarde-B.png|center|top|450px|border]]
|}
</center>


# Au retour à la page d'accueil, BackupPC nous informe du "début de la sauvegarde" ''' > Fichier journal'''.
# La page du journal nous indique que:<br>- le répertoire de stockage des sauvegardes pour la machine 127.0.0.1 a été créé,<br>- <code>AutoBlock</code> est maintenant désactivé,<br>- la sauvegarde a débutée et commencée dans le répertoire racine <code>/</code>.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:035-BPC-LancementDeLaSauvegarde-C.png|center|top|450px|border]]
||[[Image:035-BPC-LancementDeLaSauvegarde-D.png|center|top|450px|border]]
|}
</center>

'''L'utilitaire top'''

À la console du Serveur SME BackupPC, on peut lancer la commande <code>top</code> pour voir les processus en cours:
<code>top -d 1</code>.

On voit que backuppc utilise peu de mémoire mais, un pourcentage très substantiel du CPU.

[[Image:035-BPC-LancementDeLaSauvegarde-E.png|top|center|900px|border]]


'''Fichier journal de la machine'''

Après quelques minutes et un rafraîchissement de la page du journal, BackupPC nous dit que la sauvegarde est complétée.

[[Image:035-BPC-LancementDeLaSauvegarde-F.png|top|center|800px|border]]

* On remarque qu'<code>AutoBlock</code> a été réactivé par la commande <code>post-sauvegarde</code>.
*
* La sauvegarde s'est terminée correctement.


'''Liste d'attente d'arrière plan'''

Lors d'une sauvegarde quelconque, la page d'acceuil pourrait afficher le message ci-dessous.

[[Image:035-BPC-LancementDeLaSauvegarde-H.png|top|center|700px|border]]


BackupPC est occupé par <code>BackupPC_refCountUpdate</code> qui vérifie le pool des références.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;<code>BackupPC_refCountUpdate</code> est utilisé pour mettre à jour le nombre de références par sauvegarde et par hôte, de même que le nombre de références à l'échelle du système. Cet utilitaire est exploité par: <code>BackupPC_dump</code>, <code>BackupPC_nightly</code>, <code>BackupPC_backupDelete</code>, <code>BackupPC_backupDuplicate</code> et <code>BackupPC_fsck</code>.

Ci-dessous, <code>BackupPC_refCountUpdate</code> a pris 236 secondes.

[[Image:035-BPC-LancementDeLaSauvegarde-H-1.png|top|center|700px|border]]

'''Examen de la sauvegarde'''

Lorsque que la sauvegarde est terminée, la page d'accueil nous donne les différentes statistiques de cette sauvegarde.

[[Image:035-BPC-LancementDeLaSauvegarde-I.png|top|center|800px|border]]


'''Journaux de la sauvegarde'''

On voit que c'est une sauvegarde Complète et qu'elle est fusionnée.

[[Image:036-BPC-Journal.png|top|center|800px|border]]


'''JournalXfer'''

Le JournalXfer nous indique les fichiers sauvegardés selon le paramètre <code>XferLogLevel</code> au paragraphe [[#XferLogLevel]]. Le fichier journal de cette première sauvegarde est <code>XferLOG.0.z</code>.

* Le script <code>pre-sauvegarde.sh</code> a été exécuté avant la sauvegarde et <code>AutoBlock</code> a été désactivé.
*
* Le script <code>post-sauvegarde.sh</code> a été exécuté après la sauvegarde et <code>AutoBlock</code> a été réactivé.

[[Image:037-BPC-JournalXfer.png|top|center|800px|border]]
[[Image:037-BPC-JournalXfer-A.png|top|center|800px|border]]

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Pour cette sauvegarde particulière, le paramètre <code>XferLogLevel</code> était à <code>1</code> pour démontrer la liste des fichiers sauvegardés.


'''Journal Erreurs'''

* Le journal Erreurs nous indique le nombre d'erreurs encourus.

[[Image:041-BPC-JournalErreurs.png|top|center|800px|border]]


'''Journal principal de BackupPC'''

Le journal principal de BackupPC contient tous les événements survenus.

* Ce journal indique notre sauvegarde Complète du serveur 127.0.0.1.

<center>
{| class="wikitable" style="width: 60%;"
|- style="vertical-align:top;"
|[[Image:042-BPC-JournalPrincipal.png|top|center|200px|border]]
||...

2018-05-05 09:10:28 User admin requested backup of 127.0.0.1 (127.0.0.1)

2018-05-05 09:11:36 Started full backup on 127.0.0.1 (pid=2527, share=/)

2018-05-05 09:35:09 Finished full backup on 127.0.0.1

..
|}
</center>


'''Journal "messages" du Serveur SME'''

Les commandes <code>signal-event pre-backup</code>, <code>signal-event post-backup</code> et les deux <code>remoteaccess-update</code> ont toutes été exécutées correctement.

La première commande <code>remoteaccess-update</code> a mis à jour la désactivation de la propriété <code>AutoBlock</code> et la deuxième sa réactivation.

...
Processing event: <span style="color:red">pre-backup</span>
Running event handler: /etc/e-smith/events/actions/generic_template_expand
...
Processing event: <span style="color:purple">remoteaccess-update</span>
Running event handler: /etc/e-smith/events/actions/generic_template_expand
...
Processing event: <span style="color:red">post-backup</span>
Running event handler: /etc/e-smith/events/post-backup/S10mysql-delete-dumped-tables
...
Processing event: <span style="color:purple">remoteaccess-update</span>
Running event handler: /etc/e-smith/events/actions/generic_template_expand
...

=== Espace disque et nombre d'inodes ===
'''''Espace disque'''''

L'espace disque est passé de 4,6M à 1,7G.
# df -h

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/main-root
6,8G 3,6G 2,8G 57% /
tmpfs 1,9G 0 1,9G 0% /dev/shm
/dev/md0 239M 77M 150M 34% /boot
/dev/sdb1 17G <span style="color:red">1,7G</span> 15G 11% /var/lib/BackupPC

'''''Nombre d'inodes'''''

Le nombre d'inodes est passé de 67 à 201 294.
# df -i

/dev/mapper/main-root
456064 159191 296873 35% /
tmpfs 490294 1 490293 1% /dev/shm
/dev/md0 64000 54 63946 1% /boot
/dev/sdb1 15005976 <span style="color:red">201294</span> 14804682 2% /var/lib/BackupPC

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Pour 11% ''(1,7G)'' de l'espace disque de la partition <code>/dev/sbd1</code> le nombre d'inodes est de 201 294. Ce qui serait plus de 15% du total de 1 310 720 si nous avions formaté avec un système de fichiers <code>ext3</code> sans utiliser le paramètre <code>-N</code>. Ce pourcentage n'est que de 2% pour un système <code>ext4</code>.


[[Image:043-BPC-RecapitulatifPremiereSauvegarde.png|top|right|800px|border]]
* C'est ici qu'on voit l'utilisation du disque et du grand nombre d'inodes ''(le nombre de Fichiers existants vs le nombre de Nouveaux fichiers)''.
* Ce nombre s'explique par la création des liens et le stockage de la sauvegarde Complète.
<br>
<br>
<br>

'''''XferLogLevel'''''

On pourrait mettre <code>XferLogLevel</code> à <code>1</code> pour une légère augmentation de l'espace disque utilisé.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Attention: Il ne faut pas modifier la configuration d'une machine qui est en train de se faire sauvegarder car, on recevrait l'erreur suivante.

<center>
{| class="wikitable" style="width: 90%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
|
...<br>
2018-03-03 11:35:44 full backup started for directory /<br>
2018-03-03 11:39:29 Got fatal error during xfer (rsync error: unexplained error (code 139) at io.c(1556) [generator=3.0.9.11])<br>
2018-03-03 11:39:34 Backup aborted (rsync error: unexplained error (code 139) at io.c(1556) [generator=3.0.9.11])<br>
...
|}
</center>



=== Première sauvegarde Incrémentielle ===
On clique: '''Démarrer la sauvegarde Incrémentielle'''.

[[Image:044-BPC-PremiereIncrementielle-A.png|top|center|800px|border]]


# On confirme en cliquant: '''Démarrer la sauvegarde Incrémentielle'''.
# On retourne à la page d'accueil.
# BackupPC indique que la sauvegarde a débutée.
# La sauvegarde est en cours.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:044-BPC-PremiereIncrementielle-B.png|center|top|250px|border]]
||[[Image:044-BPC-PremiereIncrementielle-C.png|center|top|250px|border]]
||[[Image:044-BPC-PremiereIncrementielle-D.png|center|top|250px|border]]
||[[Image:044-BPC-PremiereIncrementielle-E.png|center|top|250px|border]]
|}
</center>

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Les 2 minutes écoulées entre le début '''10:06''' et la sauvegarde elle-même '''10:08''' ont été utilisées, par <code>BackupPC_refCountUpdate</code>, pour l'ajustement des liens vers la sauvegarde précédente '''#0'''.


# La sauvegarde Incrémentielle est commencée.
# La sauvegarde Incrémentielle est terminée.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:044-BPC-PremiereIncrementielle-F.png|center|top|450px|border]]
||[[Image:044-BPC-PremiereIncrementielle-G.png|center|top|450px|border]]
|}
</center>


Ci dessous, on voit que la sauvegarde Incrémentielle a été fusionnée à la dernière sauvegarde Complète.

[[Image:044-BPC-PremiereIncrementielle-H.png|center|top|700px|border]]


<center>L'Incrémentielle a pris 3.0 minutes et a trouvé un delta de 101 fichiers d'une taille totale de 37.5 Mo.</center>


'''Fusion'''

# Comme l'affiche la page d'accueil, l'Incrémentielle '''#1''' a été Fusionnée avec la Complète '''#0'''.
# La fusion est aussi démontrée ci-dessous, par la grandeur de l'Incrémentielle '''#1'''.

<center>
{| class="wikitable" style="width: 80%;"
|- style="vertical-align:top;"
|[[Image:045-BPC-Fusion-A.png|center|top|250px|border]]
||[[Image:045-BPC-Fusion-B.png|center|top|700px|border]]
|}
</center>


'''Examen des fichiers'''

On peut afficher le contenu d'une sauvegarde en cliquant le numéro de celle-ci "1".

[[Image:046-BPC-ExamenDeFichier-A.png|center|top|800px|border]]


L'arborescence des fichiers de la sauvegarde est affichée.

[[Image:046-BPC-ExamenDeFichier-B.png|center|top|800px|border]]


=== Deuxième sauvegarde Incrémentielle ===
On lance une deuxième sauvegarde Incrémentielle.

# Le script <code>pre-sauvegarde.sh</code> a roulé avec succès.<br>La deuxième sauvegarde Incrémentielle a débutée.<br>La script <code>post-sauvegarde.sh</code> a roulé avec succès.<br>La deuxième sauvegarde Incrémentielle s'est terminée.
#
# BackupPC fusionne toutes les sauvegardes car, pour la machine 127.0.0.1, le paramètre <code>FillCycle</code> est à <code>1</code> indiquant de fusionner toutes les sauvegardes et de toujours les garder ainsi.

<center>
{| class="wikitable" style="width: 80%;"
|- style="vertical-align:top;"
|[[Image:047-BPC-Incrementielle-2-A.png|center|top|700px|border]]
||[[Image:047-BPC-Incrementielle-2-B.png|center|top|300px|border]]
|}
</center>


=== Restauration d'un fichier ===

'''Restauration vers le répertoire original'''

# Si on veut restaurer un fichier particulier, on clique sur le numéro de la sauvegarde contenant le fichier à restaurer.
#
# On se rend dans le répertoire du fichier en parcourant l'arborescence à gauche.<br>On coche la case du fichier à restaurer '''> Restaurer les fichiers sélectionnés'''.<br>On peut sélectionner le nombre de fichiers désirés sans aucun problème.

<center>
{| class="wikitable" style="width: 80%;"
|- style="vertical-align:top;"
|[[Image:048-BPC-Restauration-A.png|center|top|300px|border]]
||[[Image:048-BPC-Restauration-B.png|center|top|700px|border]]
|}
</center>


On vérifie le nom du fichier à restaurer '''> Démarrer la restauration'''.

[[Image:048-BPC-Restauration-C.png|center|top|800px|border]]


On vérifie le chemin de la source et celui de la destination '''> Restaurer'''.

[[Image:048-BPC-Restauration-D.png|center|top|800px|border]]


La restauration a réussie; on retourne à la page d'accueil.

[[Image:048-BPC-Restauration-E.png|center|top|800px|border]]


Le fichier journal de la machine.

[[Image:048-BPC-Restauration-F.png|center|top|800px|border]]


[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;La restauration a été complétée. La variable <code>0 files</code> ne tient compte que des fichiers créés et non de ceux qui ont été restaurés à l'emplacement original.


À la page d'accueil, on peut voir un nouveau cadre: '''''Résumé de la restauration'''''. Cliquer le numéro de la restauration <code>#0</code> pour en afficher les détails.

[[Image:048-BPC-Restauration-G.png|center|top|800px|border]]

'''''Vérification'''''

# On peut cliquer <code>Visionner</code> ou <code>Erreurs</code>.
# Si on clique <code>Visionner</code>.
<span id="Restauration d'un fichier de 1314 octets"></span>
<center>
{| class="wikitable" style="width: 80%;background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:048-BPC-Restauration-H.png|center|top|450px|border]]
||[[Image:048-BPC-Restauration-I.png|center|top|450px|border]]
|}
</center>


Si on a clique <code>Erreur</code>.

[[Image:048-BPC-Restauration-J.png|center|top|800px|border]]


'''Restauration vers un répertoire différent'''

On peut choisir un autre répertoire de destination tel que <code>/temp</code> pour la restauration '''> Démarrer la restauration'''.

[[Image:048-BPC-Restauration-K.png|center|top|800px|border]]


On clique '''Restaurer'''.

[[Image:048-BPC-Restauration-L.png|center|top|800px|border]]


On retourne à la page d'accueil.

[[Image:048-BPC-Restauration-M.png|center|top|800px|border]]

<span id="Succès"></span>
La restauration s'est terminée avec '''''Succès'''''.

[[Image:048-BPC-Restauration-N.png|center|top|800px|border]]


Vérification dans le '''Fichier journal''' de la machine.

[[Image:048-BPC-Restauration-O.png|center|top|800px|border]]


[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Cette fois-ci, <code>restore 1 complete</code>, la restauration a créé un fichier car, le fichier restauré n'était pas présent dans le répertoire <code>/temp</code>.


'''''Vérification manuelle.'''''

# ls -als <span style="color:red">/temp/</span>

total 12
4 drwxr-xr-x 2 root root 4096 3 mars 2017 .
4 dr-xr-xr-x 27 root root 4096 5 mai 11:47 ..
4 -rw------- 1 root root 1314 3 mars 2017 <span style="color:red">renouvelerSSL</span>

=== Nettoyage nocturne ===

'''Sauvegardes à conserver'''

'''''Complètes'''''

[[Image:049-BPC-NettoyageNocturne-A.png|right|top|300px|border]]
Dans la page de configuration, sous l'onglet '''Horaire''', nous avons mis <code>FillCycle</code> à <code>1</code> qui implique de fusionner toutes les sauvegardes.

Nous avons aussi mis <code>FullKeepCnt</code> à <code>1</code> pour indiquer à BackupPC de ne garder qu'une seule sauvegarde Complète car, les Incrémentielles fusionnées peuvent être considérées comme des Complètes.

* À partir de V4+, la suppression des sauvegardes se fait en fonction de fusionnée/non-fusionnée et non plus si la sauvegarde d'origine était Complète ou Incrémentielle.
* Pour des raisons de compatibilité avec les anciennes versions, ce paramètre continue d'être appelé <code>FullKeepCnt</code> plutôt que <code>FilledKeepCnt</code>.
* La sauvegarde la plus récente ''(qui est toujours fusionnée)'' ne compte pas lors de la vérification de <code>FilledKeepCnt</code>.
* Avec ces paramètres, chaque fois qu'une sauvegarde Complète se termine avec succès, la plus ancienne est supprimée.
<br>
<br>
<br>

'''''Incrémentielles'''''

[[Image:049-BPC-NettoyageNocturne-B.png|right|top|300px|border]]Nous avons indiqué de conserver un maximum de '''6''' Incrémentielles avec un minimum de '''1'''.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

'''Journal principal de BackupPC'''

Nous avons fait 1 Complète et 2 Incrémentielles.

<center>
{| class="wikitable" style="width: 80%;background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:049-BPC-NettoyageNocturne-C.png|center|top|550px|border]]
||[[Image:049-BPC-NettoyageNocturne-C0.png|center|top|450px|border]]
|}
</center>


'''Fermeture et amorçage du serveur BackupPC'''

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Pour cette démonstration seulement, nous avons ajuster <code>BlackoutPeriods</code> du serveur hôte de BackupPC pour qu'il puisse exécuter une sauvegarde durant la journée.

<center>
{| class="wikitable" style="width: 95%; background-color:#ffffff;"
|- style="vertical-align:bottom;"
|
Nous avons éteint le serveur BackupPC à 20:59:23.
||Le lendemain, nous avons amorcer le serveur BackupPC à 09:49:23.

Le prochain réveil se fera à 10:00:00.
|- style="vertical-align:top;font-family: Courier New;"
| 2018-05-05 <span style="color:red">20:59:23</span> Got signal TERM... cleaning up (exit code = 0)
||
...<br>
2018-05-06 <span style="color:red">09:49:23</span> Reading hosts file<br>
2018-05-06 09:50:26 BackupPC 4.2.0 (Perl v5.10.1) started, pid 2284<br>
2018-05-06 09:50:27 Next wakeup is 2018-05-06 <span style="color:red">10:00:00</span><br>
...
|}
</center>


'''Journal de la machine 127.0.0.1, hôte de BackupPC'''

[[Image:049-BPC-NettoyageNocturne-D.png|right|top|300px|border]]
Vu que:

* Nous avons 3 sauvegardes: 1 Complète et 2 Incrémentielles, <u>toutes Fusionnées</u>.
* <code>FilledKeepCnt</code> = <code>1</code> et <code>FilledKeepCntMin</code> = <code>1</code>.
* La sauvegarde la plus récente '''#2''' ''(qui est toujours fusionnées)'' ne compte pas lors de la vérification de <code>FilledKeepCnt</code>.
* À partir de V4+, la suppression des sauvegardes se fait en fonction de fusionnée/non-fusionnée.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Nous pouvons affirmer que nous avons présentement: (3 - (la plus récente)) = <u>2 fusionnées</u>.

* Nous avons donc <u>1 sauvegarde fusionnée de trop</u>.


Lorsque BackupPC s'est réveillé, le '''''Nettoyage nocturne''''' n'ayant pas été fait, il a constaté qu'il fallait qu'il supprime 1 sauvegarde fusionnée.

Il a donc:

* Supprimé la plus ancienne fusionnée i.e. la sauvegarde Complète, <code>backup 0</code>.

...
2018-05-06 10:00:01 <span style="color:red">Removing filled backup 0</span>
2018-05-06 10:00:01 BackupPC_backupDelete: removing #0
2018-05-06 10:00:01 BackupPC_backupDelete: No prior backup for merge
...

* Mis les pointeurs à jour.

...
2018-05-06 10:03:23 <span style="color:red">BackupPC_refCountUpdate</span>: host 127.0.0.1 got 0 errors (took 1 secs)
2018-05-06 10:03:23 Finished BackupPC_backupDelete, status = 0 <span style="color:blue">(running time: 202 sec)</span>
...

* Débuté une sauvegarde Complète car, <code>FullKeepCnt</code> = <code>1</code>.

...
2018-05-06 10:05:43 Output from DumpPreUserCmd: AutoBlock=disabled
2018-05-06 10:06:02 <span style="color:red">full backup started for directory /</span>
2018-05-06 10:13:31 Output from DumpPostUserCmd: AutoBlock=enabled
2018-05-06 10:13:32 full backup 3 complete, 84114 files, 3331261397 bytes, 0 xferErrs (0 bad files, 0 bad shares, 0 other)
...

* Supprimé la sauvegarde <code>backup 1</code> car, il existait encore une sauvegarde Fusionnée de trop.

...
2018-05-06 10:13:32 <span style="color:red">Removing filled backup 1</span>
2018-05-06 10:13:32 BackupPC_backupDelete: removing #1
2018-05-06 10:13:32 BackupPC_backupDelete: No prior backup for merge
...

* Terminé sont nettoyage, en mettant les pointeurs à jour.

...
2018-05-06 10:15:21 <span style="color:red">BackupPC_refCountUpdate</span>: host 127.0.0.1 got 0 errors (took 1 secs)
2018-05-06 10:15:21 Finished BackupPC_backupDelete, status = 0 <span style="color:blue">(running time: 109 sec)</span>
...


Voici le résultat du nettoyage.

[[Image:049-BPC-NettoyageNocturne-E.png|center|top|800px|border]]



[[Image:049-BPC-NettoyageNocturne-F.png|center|top|800px|border]]


===Activation des sauvegardes automatiques ===

[[Image:050-BPC-ActivationDesSauvegardes.png|right|top|300px|border]]
[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Notre configuration fonctionne correctement, nous pouvons maintenant activer les sauvegardes automatiques en mettant <code>BackupsDisable</code> = <code>0</code> sous l'onglet '''Horaire'''.
<br>
<br>
[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;La démonstration étant terminée, nous avons remis <code>BlackoutPeriods</code> de la machine du serveur hôte de BackupPC <u>'''127.0.0.1'''</u>, aux mêmes valeurs que celles décrites au paragraphe: [[#BlackoutPeriods]].
<br>
<br>
<br>
<br>

<center>'''Les sauvegardes Complètes et Incrémentielles de l'hôte de BackupPC fonctionnent correctement.'''</center>
<br>

= Serveur SOURCE=

# Diagramme réseau
# On affiche la page Web du serveur SOURCE: https://192.168.1.152/ afin de pouvoir la comparer après la restauration de SOURCE sur DESTINATION.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:051-BPC-DiagServeurSource.png|center|top|550px|border]]
||[[Image:051-BPC-IndexHTMLSource.png|center|top|550px|border]]
|}
</center>

=== Création de la machine SOURCE dans BackupPC ===

Nous allons créer une nouvelle machine dans BackupPC pour représenter le Serveur SME SOURCE.

Nom du serveur: '''source.micronator-101.org''' // Adresse IP: 192.168.1.152.

Nous utilisons des machines virtuelle sur un réseau privé, le DNS ne fonctionne pas car, nous n'avons aucun enregistrement DNS pour nos serveurs. Il nous faut donc utiliser les adresses IP des serveurs au lieu de leur nom d'hôte.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Si vous pouvez faire un <code>ping</code> en utilisant le nom de votre Serveur SME, vous pouvez alors utiliser ce nom pour la création de la machine dans BackupPC.

* Nous utilisons le gabarit <code>smeserver-template</code> pour créer la nouvelle machine dans BackupPC.

'''Serveur > Modifier la configuration >''' onglet '''Machines > Ajouter >''' ''host'' '''192.168.1.152=smeserver-template >''' ''user'' '''admin > Sauvegarder'''.

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:053-BPC-MachineSource-A.png|center|top|650px|border]]
||[[Image:053-BPC-MachineSource-B.png|center|top|400px|border]]
|}
</center>

'''Page d'accueil'''

Sous '''Hôtes''', on choisit le nom de notre nouvelle machine i.e. '''192.168.1.152'''. Sa page d'accueil s'affiche.

[[Image:053-BPC-MachineSource-D.png|center|top|800px|border]]


'''Vérification de la configuration'''

# Modifier la configuration
# ''Paramètres de sauvegarde'' → ''Commandes des usagers''.<br>On vérifie la <code>pre-commande</code> et la <code>post-commande</code>.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:053-BPC-MachineSource-E.png|center|top|150px|border]]
||[[Image:053-BPC-MachineSource-F.png|center|top|750px|border]]
|}
</center>


# ''Horaire'' → ''Sauvegardes complètes''.
# ''Sauvegardes incrémentielles''.
# ''Suspension''.<br>* <code>BackupsDisable</code> = <code>1</code> = désactivé, s'applique seulement aux sauvegardes automatiques. On peut quand même faire une sauvegarde manuelle pour vérifier que tout fonctionne correctement.<br>* Vu que nous ne ferons que quelques sauvegardes manuelles de cette machine, plus tard, il ne sera pas nécessaire d'activer les sauvegardes automatiques. Après la sauvegarde Complète et les deux Incrémentielles du serveur SOURCE, nous allons recycler cette quincaillerie et allons restaurer la dernière sauvegarde Incrémentielle vers la nouvelle quincaillerie i.e. le serveur DESTINATION. Cette Incrémentielle est fusionnée donc, elle est "complète" parce qu'elle contient aussi les liens vers tous les fichiers qui lui manque.<br>* Sur nos Serveurs SME en production, on activera les sauvegardes automatiques seulement après avoir vérifier une sauvegarde manuelle.
# ''BlackoutPeriods''.

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
||[[Image:053-BPC-MachineSource-H.png|center|top|225px|border]]
||[[Image:053-BPC-MachineSource-I.png|center|top|225px|border]]
|[[Image:053-BPC-MachineSource-G.png|center|top|225px|border]]
||[[Image:027-BPC-Horaire-A.png|center|top|375px|border]]
|}
</center>


=== Téléversement de la clé SSH de BackupPC vers SOURCE ===

<u>Sur le serveur hôte de BackupPC</u>, on se substitue à l'usager '''backuppc'''.
# su -s /bin/bash backuppc

On téléverse la clé publique de BackupPC vers le client SOURCE afin que BackupPC puisse entrer en communication sans devoir utiliser un mot de passe lors d'une connexion SSH.
# cat /var/lib/BackupPC/.ssh/id_rsa.pub | ssh -p 2222 root@192.168.1.152 "cat >> /root/.ssh/authorized_keys2"

The authenticity of host '[192.168.1.152]:2222 ([192.168.1.152]:2222)' can't be established.
RSA key fingerprint is c0:24:7f:fe:00:83:cd:f6:2b:ad:e7:b9:dc:b4:aa:bf.
Are you sure you want to continue connecting (yes/no)? <span style="color:red">yes</span>
Warning: Permanently added '[192.168.1.152]:2222' (RSA) to the list of known hosts.
root@192.168.1.152's password: <span style="color:red">mot-de-passe-de-root-<u>du-serveur-SOURCE</u></span>


'''Vérification'''

On vérifie le login sans mot de passe et la clé SSH de BackupPC stockée sur le serveur SOURCE.
# ssh -p 2222 root@192.168.1.152 "cat /root/.ssh/authorized_keys2"

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA24XUsh60M8PA7Xe6+lsk7+LdnpHcTx+U8XLjhRpUXTj2muSdS8QjBv4A7eSyiXOt550HUPlLELMZuewPnNt+ODViPAl7TC+at7xSfDGHmlcdDek+M36P
OSIyStoK2LEGsvnK2v6lpo3exChf0QTfGMAn43nxybyFGJ+I3USG/HAfuqzqfFrCwFxYxc8WcjcocK6HXXziF8E1BWheyO4qz1S0KWq2NEr7KdOa2xT+xYB5wtSKrYdJV7QEoGOtZ3PwNvE6
xTl3rAcHI7ZVMSJAGRjQLKPXo9isfzZfs/FW8QuoqqZCSPYeIp/n+qjj/iTttfO17sbzF09HKdSCboUEw== backuppc@sme-9

* L'usager root s'est logué au serveur SOURCE sans mot de passe, le temps d'exécuter la commande <code>cat</code> qui a affiché le contenu du fichier <code>authorized_keys2</code> du serveur 192.168.1.152.

Sur le serveur hôte, on vérifie la concordance des clés en affichant la clé publique de BackupPC stockée sur le serveur hôte.
# cat /var/lib/BackupPC/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA24XUsh60M8PA7Xe6+lsk7+LdnpHcTx+U8XLjhRpUXTj2muSdS8QjBv4A7eSyiXOt550HUPlLELMZuewPnNt+ODViPAl7TC+at7xSfDGHmlcdDek+M36P
OSIyStoK2LEGsvnK2v6lpo3exChf0QTfGMAn43nxybyFGJ+I3USG/HAfuqzqfFrCwFxYxc8WcjcocK6HXXziF8E1BWheyO4qz1S0KWq2NEr7KdOa2xT+xYB5wtSKrYdJV7QEoGOtZ3PwNvE6
xTl3rAcHI7ZVMSJAGRjQLKPXo9isfzZfs/FW8QuoqqZCSPYeIp/n+qjj/iTttfO17sbzF09HKdSCboUEw== backuppc@sme-9

* Les clés coïncident. La clé a donc bien été téléversée sur le serveur SOURCE.


On se désengage de la session '''backuppc''' et on retourne à l'usager root.
# exit


[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Si la connexion distante n'a pas réussie, on peut se loguer en root à la console du serveur distant et désactiver <code>AutoBlock</code>.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| <nowiki>#</nowiki> config setprop sshd AutoBlock disabled
|}

On signale le changement.
{| class="wikitable" style="width: 80%; background-color:#FFEED9;"
|- style="vertical-align:top;font-family: Courier New;"
| <nowiki>#</nowiki> signal-event remoteaccess-update
|}


[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Depuis la console du serveur BackupPC, on ré-essaie une connexion à distance vers le serveur 192.168.1.152.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Il ne sera pas nécessaire de réactiver <code>AutoBlock</code> sur le serveur distant car, la script <code>post-sauvegarde.sh</code> s'en chargera.


S'il est impossible de désactiver <code>AutoBlock</code> à cause de l'inaccessibilité de la console à distance:

* On peut demander d'installer '''Fail2ban''' sur le serveur distant et mettre l'IP du serveur BackupPC sur la liste blanche.
* Vu que Fail2ban remplace les fonctionnalités d'<code>AutoBlock</code>, on désactive ce dernier et ainsi, les logins depuis BackupPC ne seront plus jamais bloqués.
*Pour l'installation de Fail2ban, voir https://www.micronator.org/affaires/produit/sme-9-x8-x-fail2ban/.


=== Sauvegardes du Serveur SME SOURCE ===

# Diagramme du Serveur SME SOURCE.
# Sur la page d'accueil de la machine du serveur SOURCE ''(192.168.1.152)'', on lance la sauvegarde Complète de la même manière que celle du serveur BackupPC exécutée plus tôt.<br>La sauvegarde débute.

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:054-BPC-SauvegardeSource-A.png|rignt|top|250px|border]]
||[[Image:054-BPC-SauvegardeSource-B.png|center|top|800px|border]]
|}
</center>


# La sauvegarde est en cours.
# Le '''Fichier journal''' de la machine SOURCE affiche les résultats de la sauvegarde Complète.

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:054-BPC-SauvegardeSource-C.png|center|top|550px|border]]
||[[Image:054-BPC-SauvegardeSource-D.png|center|top|550px|border]]
|}
</center>


La page d'accueil de la machine SOURCE affiche tous les détails de la sauvegarde.

[[Image:054-BPC-SauvegardeSource-E.png|center|top|800px|border]]


[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Les Fichiers existants sont ceux trouvés dans la sauvegarde d'un autre SME, celle de 127.0.0.1, ils sont identiques à ceux de SOURCE et ainsi BackupPC crée des liens pour la sauvegarde de SOURCE pointant vers ces mêmes fichiers identiques appartenant à 127.0.0.1. C'est ce qui explique que 10 774 fichiers ont une grandeur totale minime de 21.9 Mo; seulement '''4 852''' nouveaux fichiers, exclusifs à SOURCE, ont été sauvegardés.


'''Incrémentielles du Serveur SME SOURCE'''

'''''Première Incrémentielle'''''

On lance la sauvegarde Incrémentielle de la même manière que celle du serveur hôte de BackupPC plus tôt.

# L'Incrémentielle est terminée.
# L'Incrémentielle a été fusionnée.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:055-BPC-IncrementiellesServeurSource-A.png|center|top|800px|border]]
||[[Image:055-BPC-IncrementiellesServeurSource-B.png|center|top|200px|border]]
|}
</center>


Sur la page d'accueil, les détails de la sauvegarde Incrémentielle <code>1</code> sont affichés.

[[Image:055-BPC-IncrementiellesServeurSource-C.png|center|top|800px|border]]


'''''Deuxième Incrémentielle'''''

On peut aussi faire une deuxième Incrémentielle pour voir ce qui se passera.

# Les deux Incrémentielles sont toutes deux fusionnées.
# Sur la page d'accueil, les détails de toutes les sauvegardes sont affichés.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:055-BPC-IncrementiellesServeurSource-D.png|center|top|250px|border]]
||[[Image:055-BPC-IncrementiellesServeurSource-E.png|center|top|750px|border]]
|}
</center>


<center>'''Tout s'est bien passé. On est prêt pour une restauration Complète du serveur SOURCE sur le serveur DESTINATION.'''</center>


= Restauration de SOURCE sur DESTINATION =

=== Description de la dernière sauvegarde de SOURCE ===

[[Image:056-BPC-RestSourceSurDestination-C.png|left|top|500px|border]]
&nbsp;&nbsp;La dernière sauvegarde de SOURCE porte le <code>#2</code>.

&nbsp;&nbsp;On se servira de ce numéro pour générer le fichier TAR.
<br>
<br>
<br>
<br>

[[Image:056-BPC-RestSourceSurDestination-D.png|right|top|750px|border]]
La dernière sauvegarde est de type Incrémentielle mais, Fusionnée; c'est à dire qu'elle contient aussi des liens vers les fichiers de la dernière sauvegarde Complète.


Par contre, elle n'a pas sauvegarder les fichiers:

* <code>/etc/fstab</code><br>Servant pour le montage des disques.<br>&nbsp;&nbsp;
* <code>/etc/udev/rules.d/70-persistent-net.rules</code><br>Servant à relier les a­dres­ses MAC des cartes réseau à leur dispositif <code>eth0</code> et <code>eth1</code>.
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>

=== Création du fichier TAR de la sauvegarde ===
<span id="On crée un répertoire de stockage pour nos futurs fichiers TAR"></span>
On crée un répertoire de stockage pour nos futurs fichiers TAR qui serviront pour les restaurations complètes.

Sur le serveur BackupPC en tant qu'usager root.
# mkdir /var/lib/BackupPC/mes_restaurations

On ajuste le propriétaire et le groupe.
# chown backuppc:backuppc /var/lib/BackupPC/mes_restaurations/

On ajuste les droits.
# chmod 700 /var/lib/BackupPC/mes_restaurations/

On vérifie.
# ls -lsd /var/lib/BackupPC/mes_restaurations/


'''Création du fichier TAR'''

'''''BackupPC_tarCreate'''''

* <code>BackupPC_tarCreate</code> crée un fichier TAR contenant tous les fichiers ou répertoires d'une sauvegarde particulière. La fusion des Incrémentielles se fait automatiquement; vous n'avez donc pas à vous soucier de savoir si certains fichiers apparaissent dans la sauvegarde Incrémentielle ou Complète.
*
* Les fichiers et répertoires de la ligne de commande sont relatifs au nom du partage spécifié.
*
* Les options <code>-h</code>, <code>-n</code> et <code>-s</code> spécifient quelle sauvegarde est utilisée pour générer l'archive TAR. Les options <code>-r</code> et <code>-p</code> peuvent être utilisées pour déplacer les chemins dans l'archive TAR afin que les fichiers extraits puissent être versés dans un emplacement différent de leur emplacement d'origine.
*
Options de <code>BackupPC_tarCreate</code>:

Options obligatoires:
-h host hôte à partir duquel l'archive TAR est créée
-n dumpNum numéro de la sauvegarde à partir de laquelle l'archive TAR est créée
Un nombre négatif signifie par rapport à la fin (par exemple, -1
signifie la sauvegarde la plus récente, -2 la 2ème plus récente etc).
-s shareName nom du partage à partir duquel l'archive TAR est créée

Autres options:
-t affiche un résumé des totaux
-r pathRemove préfixe du chemin qui sera remplacé par pathAdd
-p pathAdd préfixe du nouveau chemin
-b BLOCKS BLOCKS x 512 octets par enregistrement (20 par défaut, identique à tar)
-w writeBufSz taille du tampon d'écriture (1048576 = 1 Mo par défaut)
-e charset jeu de caractères pour l'encodage des noms de fichiers (par défaut: la
valeur de $Conf{ClientCharset} utilisée lorsque la sauvegarde a été
effectuée)
-l affiche la liste des fichiers; ne génère pas d'archive TAR
-L affiche la liste détaillée des fichiers; ne génère pas d'archive TAR


On se substitue à l'usager '''backuppc'''. ''(L'invite va passer de <span style="color:blue">#</span> à <span style="color:red">$</span>)''.
<span style="color:blue">#</span> su - backuppc -s /bin/sh

On se rend dans le répertoire de stockage.
<span style="color:red">$</span> cd /var/lib/BackupPC/mes_restaurations/


On crée le fichier TAR de la sauvegarde numéro <code>2</code> du serveur hôte <code>192.168.1.152</code>.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Peut prendre un certain temps. Être patient!
$ /usr/share/BackupPC/bin/BackupPC_tarCreate -h 192.168.1.152 -n 2 -s / / > source-152-2.tar

On vérifie.
$ ls -ls

2357982 -rw-r--r-- 1 backuppc backuppc 2414571520 15 mai 15:11 <span style="color:red">source-152-2.tar</span>


=== Environnement du Serveur DESTINATION ===

'''Réseau LOCAL vs externe'''

[[Image:056-BPC-RestSourceSurDestination-E.png|right|top|600px]]
Le réseau LOCAL du serveur micronator.org, servant d'aiguilleur pour les connexions à l'Internet, est sur le segment IP 192.168.<span style="color:red">'''1'''</span>.0/24.

Toutes nos machines de travail et tous nos Serveur SME virtuels sont donc sur le réseau LOCAL du serveur micronator.org.

Tous nos serveurs virtuels sont connectés à travers leur '''carte réseau LOCAL''' ''(<code>eth0</code>)'' sur le segment LOCAL de micronator.org; ils sont tous sur le segment IP 192.168.<span style="color:red">'''1'''</span>.0/24 et peuvent utiliser l'aiguilleur micronator.org pour se rendre sur l'Internet.

Tout ceci fait en sorte que toutes nos stations, pour communiquer avec leur serveur respectif, <u>passent par le réseau LOCAL</u> de leur Serveur SME virtuel.





'''Serveur SME DESTINATION distant'''

[[Image:056-BPC-RestSourceSurDestination-F.png|center|top|1000px]]

Advenant le cas où le Serveur SME est distant et que l'accès SSH soit privé, on peut ouvrir une session TeamViewer sur une station distante ayant accès au réseau LOCAL du serveur distant puis, ouvrir une connexion PuTTY sur la station distante afin de se brancher localement au serveur DESTINATION et rendre l'accès SSH publique.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Dans le gestionnaire Server Manager de DESTINATION, sur la page '''Accès à distance''', il faut aussi vérifier tous les autres paramètres SSH. Voir: [[#Paramètres SSH de tous les serveurs]].


'''Mise à jour SME'''

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Avant la restauration, il est préférable de mettre à jour le serveur DESTINATION. Le répertoire <code>/boot</code> du serveur SOURCE n'étant pas sauvegardé, la mise à jour avant la restauration installera sur DESTINATION le dernier noyau Linux s'il y a lieu.


=== Téléversement de la clé SSH de BackupPC sur DESTINATION ===

On se substitue à l'usager '''backuppc''' et on téléverse la clé publique de BackupPC sur le serveur DESTINATION ''(192.168.1.102)'' afin que BackupPC puisse entrer en communication avec le serveur DESTINATION sans devoir utiliser un mot de passe lors d'une connexion SSH.
$ cat /var/lib/BackupPC/.ssh/id_rsa.pub | ssh -p 2222 root@192.168.1.102 "cat >> /root/.ssh/authorized_keys2"

The authenticity of host '[192.168.1.102]:2222 ([192.168.1.102]:2222)' can't be established.
RSA key fingerprint is be:a2:3f:cf:c1:4f:05:63:1a:12:c8:75:c5:a7:2c:6f.
Are you sure you want to continue connecting (yes/no)? <span style="color:red">yes</span>
Warning: Permanently added '[192.168.1.102]:2222' (RSA) to the list of known hosts.
root@192.168.1.102's password: <span style="color:red">mot-de-passe-de-root-du_serveur-DESTINATION</span>


'''Vérification de la connexion'''

On ouvre une connexion SSH vers DESTINATION et on affiche ses paramètres d'<code>AutoBlock</code>.
$ /usr/bin/ssh -p2222 root@192.168.1.102 "/sbin/e-smith/config show sshd"

AutoBlock=enabled
AutoBlockTime=900
AutoBlockTries=4
LoginGraceTime=600
MaxAuthTries=2
MotdStatus=enabled
PasswordAuthentication=<span style="color:red">yes</span>
PermitRootLogin=<span style="color:red">yes</span>
TCPPort=<span style="color:red">2222</span>
UsePAM=yes
access=<span style="color:red">public</span>
status=<span style="color:red">enabled</span>

Il n'y a pas eu de demande de mot de passe et l'exécution de la commande s'est terminé correctement. La connexion sans mot de passe est donc fonctionnelle.

On se désengage de la connexion sans mot de passe.
$ exit

Nous sommes de retour à la console du serveur BackupPC; on sort de <code>su</code> et on revient à l'usager root.
$ exit


'''Page WEB actuelle de DESTINATION'''

{| class="wikitable" style="width: 450px; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:056-BPC-RestSourceSurDestination-B.png|center|top|450px|border]]
|}


'''Login sur le serveur DESTINATION'''

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;On peut ouvrir un session SSH vers le serveur de DESTINATION <u>pour pouvoir voir ce qui s'est passé en cas d'erreur de restauration</u>.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il faut ouvrir cette session <u>avant la restauration</u> car, celle-ci écrasera les clés SSH de DESTINATION et le serveur pourrait refuser toutes nouvelles connexions.


<center>'''Le fichier TAR de la sauvegarde a été créé et la clé SSH téléversée. Nous sommes prêt pour la restauration.'''</center>


=== Commande de pré-restauration ===

Contrairement à une restauration de quelques répertoires ou fichiers, lorsqu'on restaure toute une sauvegarde, il faut exécuter la commande de <code>pre-restauration</code> avant la restauration et celles de <code>post-installation</code> après la restauration.


On envoie la commande de <code>pre-restauration</code> avec une pause de 15 secondes.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Attendre que l'invite revienne.
$ /usr/bin/ssh -p 2222 root@192.168.1.102 "/sbin/e-smith/signal-event pre-restore; /bin/sleep 15"

Vérification de l'exécution de la commande de pré-restauration.
$ /usr/bin/ssh -p 2222 root@192.168.1.102 "/bin/date; cat /var/log/messages | grep 'Processing event: pre-restore' | tail -1"

mar. mai 15 18:26:02 EDT 2018
May 15 18:25:21 destination esmith::event[2537]: <span style="color:red">Processing event: pre-restore</span>


=== Arrêt du serveur SOURCE ===

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Il faut absolument que le serveur SOURCE soit éteint avant de lancer les commandes de restauration car, la commande <code>post-restauration</code> en fait partie. Si SOURCE roule encore lors du réamorçage de DESTINATION, des conflits de noms de serveurs et d'adresses IP seraient détectés.


=== Restauration ===

Le groupe de commandes qui envoie le fichier TAR au serveur DESTINATION:
* Se connecte.
* Demande à DESTINATION de se rendre dans le répertoire racine <code>/</code>.
* Envoie le fichier TAR que DESTINATION décompose avec <code>/bin/tar -xvv</code>.&nbsp;&nbsp;''(L'option <code>vv</code> affiche une liste plus longue, semblabe à <code>ls -l</code>)''.
* À la fin du téléversement, envoie les commandes de <code>post-restauration</code>.
* Se déconnecte car, les commandes de restauration sont terminées.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Peut prendre plusieurs minutes et même plusieurs heures pour une très grosse restauration.


La restauration est terminée lorsque l'invite <span style="color:red">$</span> réapparaît.

$ ssh -p 2222 root@192.168.1.102 "cd / && /bin/tar -xvv; /sbin/e-smith/signal-event post-upgrade; /sbin/e-smith/signal-event reboot" < source-152-2.tar

...
-rw-r--r-- root/root 172 2007-08-28 10:54 ./var/www/icons/small/unknown.png
-rw-r--r-- root/root 125 2004-11-20 20:16 ./var/www/icons/small/uu.gif
-rw-r--r-- root/root 166 2007-08-28 10:54 ./var/www/icons/small/uu.png
<span style="color:purple">bash: : commande introuvable</span>
<span style="color:red">$</span>

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;La ligne <span style="color:purple">bash: : commande introuvable</span> peut être ignorée car il n'y a pas de commande introuvable, seulement une suite d'espaces interprété comme une commande.


=== Réamorçage ===

DESTINATION a reçu les commandes de <code>post-restauration</code> et réamorce pour activer les nouveaux paramètres de configuration i.e. ceux contenus dans le fichier TAR.

# Le serveur débute son réamorçage. ''(Peut prendre un certain temps. Être patient!)''
# Activation des paramètres de configuration.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:056-BPC-RestSourceSurDestination-H.png|center|top|500px|border]]
||[[Image:056-BPC-RestSourceSurDestination-I.jpg|center|top|500px|border]]
|}
</center>


# Remise en place des bases de données MySQL.
# Le fenêtre de <code>login</code> est affichée.

<center>
{| class="wikitable" style="width: 80%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:056-BPC-RestSourceSurDestination-J.png|center|top|500px|border]]
||[[Image:056-BPC-RestSourceSurDestination-K.png|center|top|500px|border]]
|}
</center>


=== Vérification ===

'''Login SSH'''

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Maintenant, DESTINATION est un clone de de SOURCE.


Si nous n'avons pas ouvert de session SSH vers DESTINATION avant la restauration, on en ouvre une maintenant et on se logue en root avec son <u>mot de passe du serveur SOURCE</u>.
# login as: <span style="color:red">root</span>

root@192.168.1.152's password: <span style="color:red">mot-de-psse-de-root-sur-SOURCE</span>
Last login: Tue May 15 19:31:03 2018
<nowiki>************ Welcome to SME Server 9.2 *************</nowiki>

Before editing configuration files, familiarise
yourself with the automated events and templates
systems.

Please take the time to read the documentation
http://wiki.contribs.org/Main_Page

Remember that SME Server is free to download
and use, but it is not free to build

Please help the project :
http://wiki.contribs.org/Donate

<nowiki>****************************************************</nowiki>
[root@<span style="color:red">source</span> ~]#


'''Cartes réseau'''
# ifconfig

eth0 Link encap:Ethernet HWaddr 08:00:27:D7:69:CF
inet adr:192.168.2.152 Bcast:192.168.2.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:79 errors:0 dropped:0 overruns:0 frame:0
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:5968 (5.8 KiB) TX bytes:6941 (6.7 KiB)

eth1 Link encap:Ethernet HWaddr 08:00:27:D1:6F:3C
inet adr:<span style="color:red">192.168.1.152</span> Bcast:192.168.1.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:342 errors:0 dropped:0 overruns:0 frame:0
TX packets:250 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:60892 (59.4 KiB) TX bytes:23676 (23.1 KiB)

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:107 errors:0 dropped:0 overruns:0 frame:0
TX packets:107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:8435 (8.2 KiB) TX bytes:8435 (8.2 KiB)


===Site Web ===
Le site Web est fonctionnel tel qu'il était sur le serveur SOURCE original.

# Nouveau diagramme du serveur DESTINATION.
# On se rend au nouveau URL du serveur DESTINATION i.e. l'adresse du serveur SOURCE.

<center>
{| class="wikitable" style="width: 60%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:056-BPC-RestSourceSurDestination-L.png|center|top|250px|border]]
||[[Image:056-BPC-RestSourceSurDestination-M.png|center|top|550px|border]]
|}
</center>

<center>'''Le site Web est tel qu'il était sur le serveur SOURCE original. DESTINATION est maintenant identique à SOURCE. CQFD'''</center>


= Cartes réseaux du serveur de DESTINATION =

Il faut s'assurer que le serveur DESTINATION ait une configuration unique pour ses cartes réseau et que ces dernières soient bien <code>eth0</code> et <code>eth1</code>.

[[Image:Icone-AsurveillerAPT.png|25px]]&nbsp;&nbsp;Si on change les cartes réseau, la configuration prendrait par défaut, les cartes <code>eth2</code> et <code>eth3</code>.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Exemple: les <u>cartes physiques originales</u> ne sont plus présentes sur le serveur DESTINATION car, après la restauration, <u>elles ont été remplacées par des cartes plus rapides</u>.


<span id="Vérification des cartes réseau de DESTINATION"></span>

'''Vérification des cartes réseaux de DESTINATION'''

On se logue au serveur DESTINATION et on examine la configuration de ses nouvelles cartes réseau.
# ifconfig

<span style="color:red">eth2</span> Link encap:Ethernet HWaddr 00:1C:C0:F0:1F:95
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:2001 (1.9 KiB) TX bytes:5972 (5.8 KiB)

<span style="color:red">eth3</span> Link encap:Ethernet HWaddr 00:50:8B:AE:88:89
inet adr:192.168.1.1 Bcast:192.168.1.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:221 errors:0 dropped:0 overruns:0 frame:0
TX packets:156 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:38647 (37.7 KiB) TX bytes:15939 (15.5 KiB)

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:64 errors:0 dropped:0 overruns:0 frame:0
TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:5212 (5.0 KiB) TX bytes:5212 (5.0 KiB)

Comme on le voit ci-dessus, les cartes présentes <u>ne sont pas celles d'origine</u> car elles portent les noms de <code>eth2</code> et <code>eth3</code>.


On affiche le fichier de configuration des cartes réseau.
# cat /etc/udev/rules.d/70-persistent-net.rules

<nowiki># This file was automatically generated by the /lib/udev/write_net_rules</nowiki>
<nowiki># program, run by the persistent-net-generator.rules rules file.</nowiki>
<nowiki>#</nowiki>
<nowiki># You can modify it, as long as you keep each rule on a single</nowiki>
<nowiki># line, and change only the value of the NAME= key.</nowiki>

<nowiki># PCI device 0x8086:0x100e (e1000)</nowiki>
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:D7:69:CF", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

<nowiki># PCI device 0x8086:0x100e (e1000)</nowiki>
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:D1:6F:3C", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

<nowiki># PCI device 0x8086:0x100e (e1000)</nowiki>
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1C:C0:F0:1F:95", ATTR{type}=="1", KERNEL=="eth*", NAME="<span style="color:red">eth2</span>"

<nowiki># PCI device 0x8086:0x100e (e1000)</nowiki>
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:8B:AE:88:89", ATTR{type}=="1", KERNEL=="eth*", NAME="<span style="color:red">eth3</span>"

Comme on le voit ci-dessus, les cartes originales <code>eth0</code> et <code>eth1</code> ont été remplacées par les cartes <code><span style="color:red">eth2</span></code> et <code><span style="color:red">eth3</span></code>.


'''Fichier /etc/udev/rules.d/70-persistent-net.rules'''

On édite le fichier <code>/etc/udev/rules.d/70-persistent-net.rules</code> tel que ci-dessous:

* On supprime les lignes des anciennes cartes <code>eth0</code> et <code>eth1</code>.
* On remplace <code>eth2</code> par <code>eth0</code>.
* On remplace <code>eth3</code> par <code>eth1</code>.

<nowiki># This file was automatically generated by the /lib/udev/write_net_rules</nowiki>
<nowiki># program, run by the persistent-net-generator.rules rules file.</nowiki>
<nowiki>#</nowiki>
<nowiki># You can modify it, as long as you keep each rule on a single</nowiki>
<nowiki># line, and change only the value of the NAME= key.</nowiki>

<del>#PCI device 0x8086:0x100e (e1000)</del>
<del>SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:D7:69:CF", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"</del>

<del># PCI device 0x8086:0x100e (e1000)</del>
<del>SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:D1:6F:3C", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"</del>

# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1C:C0:F0:1F:95", ATTR{type}=="1", KERNEL=="eth*", NAME="<span style="color:red">'''eth0'''</span>"

# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:8B:AE:88:89", ATTR{type}=="1", KERNEL=="eth*", NAME="<span style="color:red">'''eth1'''</span>"


'''Répertoire /etc/sysconfig/network-scripts'''

On se rend dans le répertoire de configuration des scripts des cartes réseau.
# cd /etc/sysconfig/network-scripts


'''Fichier ifcfg-eth2'''
# cat ifcfg-eth2 | grep eth2

DEVICE=eth2


* On change <code>DEVICE=eth2</code> pour <code>DEVICE=eth0</code>.
# sed -i 's/DEVICE=eth2/<span style="color:red">DEVICE=eth0</span>/' ifcfg-eth2


* On renomme le fichier <code>ifcfg-eth2</code> pour <code>ifcfg-eth0</code>.
# mv ifcfg-eth2 <span style="color:red">ifcfg-eth0</span>


'''Fichier ifcfg-eth3'''
# cat ifcfg-eth3 | grep eth3

DEVICE=eth3


* On change <code>DEVICE=eth3</code> pour <code>DEVICE=eth1</code>.
# sed -i 's/DEVICE=eth3/<span style="color:red">DEVICE=eth1</span>/' ifcfg-eth3


* On renomme le fichier <code>ifcfg-eth3</code> pour <code>ifcfg-eth1</code>.
# mv ifcfg-eth3 <span style="color:red">ifcfg-eth1</span>


'''Fichier route-eth2'''

* On renomme le fichier <code>route-eth2</code> pour <code>route-eth0</code>.
# mv route-eth2 <span style="color:red">route-eth0</span>


'''Fichier route-eth3'''

* On change <code>eth3</code> pour <code>eth1</code>.
# sed -i 's/eth3/<span style="color:red">eth1</span>/' route-eth3


* On renomme le fichier <code>route-eth3</code> pour <code>route-eth1</code>.
# mv route-eth3 <span style="color:red">route-eth1</span>


=== Réamorçage ===
# shutdown -r now

On se logue et on vérifie.
# ifconfig

<span style="color:red">eth0</span> Link encap:Ethernet HWaddr 00:1C:C0:F0:1F:95
inet adr:192.168.2.102 Bcast:192.168.2.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:2001 (1.9 KiB) TX bytes:5972 (5.8 KiB)

<span style="color:red">eth1</span> Link encap:Ethernet HWaddr 00:50:8B:AE:88:89
inet adr:192.168.1.102 Bcast:192.168.1.255 Masque:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:221 errors:0 dropped:0 overruns:0 frame:0
TX packets:156 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:38647 (37.7 KiB) TX bytes:15939 (15.5 KiB)

lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:64 errors:0 dropped:0 overruns:0 frame:0
TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:5212 (5.0 KiB) TX bytes:5212 (5.0 KiB)


'''Fermeture de la connexion SSH'''

On ferme la connexion SSH vers le serveur DESTINATION.
# exit

<center>'''Les cartes réseau ont retrouvé leur dispositif par défaut.'''</center>

= Déverminage =

<span id="sshd & AutoBlock"></span>
=== sshd & AutoBlock ===

'''OpenSSH'''

''Référence'': https://fr.wikipedia.org/wiki/OpenSSH.

OpenSSH ''('''Open'''BSD '''S'''ecure '''Sh'''ell)'' est un ensemble d'outils informatiques LIBREs, permettant des communications sécurisées sur un réseau informatique en utilisant le protocole SSH.

Créé comme alternative LIBRE à la suite logicielle proposée par la société SSH Communications Security, OpenSSH est développé depuis 1999 par l'équipe d'OpenBSD, dirigée par son fondateur Theo de Raadt, et diffusé sous licence BSD.

OpenSSH est à la fois une brique logicielle du système OpenBSD et l'implémentation SSH la plus utilisée sur les systèmes BSD et GNU/Linux. L'équipe du projet OpenSSH maintient une version ''normale'' propre à OpenBSD et une version multiplateforme sous l'appellation Portable OpenSSH à destination des systèmes compatibles ''(autres BSD, systèmes GNU/Linux...)''. Les versions multiplateforme sont estampillées d'un <code>p</code> comme '''p'''ortable, par exemple: <code>OpenSSH 5.0'''p'''1</code>.

La suite logicielle OpenSSH inclut les outils suivants:

* '''ssh''', un remplaçant pour les clients rlogin et telnet: ssh utilisateur@exemple.com.
* '''scp''', un remplaçant pour le client rcp: scp toto.txt utilisateur@exemple.com:~/utilisateur/.
* '''sftp''', un remplaçant pour le client ftp: sftp utilisateur@exemple.com.
* '''sshd''', le démon SSH: sshd, le démon qui nous intéresse le plus en ce qui concerne BackupPC.


'''Paramètres du démon <code>sshd</code> pour tous nos Serveurs SME'''

Comme exemple, on affiche le paramètre du démon <code>sshd</code> du serveur hôte de BackupPC.
# config show sshd

sshd=service
AutoBlock=enabled
AutoBlockTime=900
AutoBlockTries=4
LoginGraceTime=600
MaxAuthTries=2
MotdStatus=enabled
PasswordAuthentication=yes
PermitRootLogin=yes
TCPPort=2222
UsePAM=yes
access=public
status=enabled


'''''AutoBlock=enabled'''''

Si <code>AutoBlock</code> est activé i.e <code>=enabled</code>, il rejette les connexions, provenant de la même adresse IP, après '''3''' demandes ou plus ''(début du blocage indiqué par <code>AutoBlockTries</code>)'' au cours des '''15''' minutes précédentes ''(<code>AutoBlockTime=900</code>)''. Le blocage automatique se termine lorsqu'il y a eu moins de demandes que ce nombre dans le temps spécifié ''(<code>AutoBlockTime</code>)''. Les <u>connexions réussies</u> font aussi partie du nombre de demandes.

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;Par design, seules les adresses IP <u>en dehors du réseau LOCAL</u> seront bloquées.

[[Image:Icone-AstuceAPT.png|25px]]&nbsp;&nbsp;Dans cette marche à suivre, on s'occupe toujours d'<code>AutoBlock</code> au cas où les communications des serveurs de nos lecteurs se feraient sur le réseau externe au lieu de LOCAL.


'''''AutoBlockTime=<code>900</code>'''''

L'intervale de temps pendant lequel les connexions sont comptées.

Si <code>AutoblockTime</code> est à <code>900s</code>, le temps de libération après une quatrième tentative est de 900s.

Si <code>AutoblockTime</code> est à <code>900s</code>, le temps de libération après une cinquième tentative est de 2 x 900s = 1800s.

Si <code>AutoblockTime</code> est à <code>900s</code>, le temps de libération après une sixième tentative est de 4 x 900s = 3600s.

Si <code>AutoblockTime</code> est à <code>900s</code>, le temps de libération après une septième tentative est de 8 x 900s = 7200s.


'''''AutoBlockTries=<code>4</code>'''''

Début du nombre de connexions à partir duquel elles seront bloquées.

<code>AutoBlockTries=4</code> signifie que 3 connexions, réussies ou non, sont autorisées. La quatrième sera bloquée.


'''Réglages'''

''Référence'': [https://wiki.contribs.org/AutoBlock https://wiki.contribs.org/AutoBlock].

[[Image:Icone-NoteAPT.png|25px]]&nbsp;&nbsp;La commande <code>signal-event remoteaccess-update</code> entraînera la suppression de l'historique d'<code>AutoBlock</code> en raison de la présence de: <code>masq -> adjust</code> dans le fichier <code>services2adjust</code> exécuté par <code>remoteaccess-update</code>.


'''''AutoBlock'''''

Activation
# db configuration setprop sshd AutoBlock <span style="color:red">enabled</span>

Désactivation
# db configuration setprop sshd AutoBlock <span style="color:red">disabled</span>

Il faut obligatoirement signaler le changement.
# signal-event remoteaccess-update


'''''AutoBlockTries'''''
# db configuration setprop sshd AutoBlockTries <span style="color:red">4</span>

Il faut obligatoirement signaler le changement.
# signal-event remoteaccess-update


'''''AutoBlockTime'''''

En secondes.
# db configuration setprop sshd AutoBlockTime <span style="color:red">900</span>

Il faut obligatoirement signaler le changement.
# signal-event remoteaccess-update


'''Historique d'AutoBlock'''

Affichage de l'historique d'<code>AutoBlock</code>.
# cat /proc/net/xt_recent/SSH

src=192.168.1.81 ttl: 128 last_seen: 4300025257 oldest_pkt: 3 4295469879, 4299976390, 4300025257


'''État actuel du blocage'''

Affichage de l'état actuel du blocage pour les 100 dernières adresses IP vues:
# iptables -L SSH_Autoblock -v

Chain SSH_Autoblock (1 references)
pkts bytes target prot opt in out source destination
3 156 all -- any any anywhere anywhere recent: SET name: SSH side: source
0 0 denylog all -- any any anywhere anywhere recent: CHECK seconds: 900 hit_count: 4 TTL-Match name: SSH side: source


'''Suppression de l'historique'''

Un administrateur du système, avec les droits de root, peut supprimer l'historique de <code>SSH_AutoBlock</code> à tout moment avec la commande suivante:
# echo "/" > /proc/net/xt_recent/SSH


=== Script de pré-sauvegarde ===

'''Si la désactivation d'<code>AutoBlock</code> est non fonctionnel:'''

# Courriel reçu par <code>EMailAdminUserName@EMailUserDestDomain</code> ''(admin@micronator-101.org)''.
# Message dans le journal BackupPC de cette machine.
# Message affiché sur la page d'accueil de la machine en question.

<center>
{| class="wikitable" style="width: 90%; background-color:#ffffff;"
|- style="vertical-align:top;"
|[[Image:006-BPC-EMailAdminUserName.png|center|top|330px|border]]
||Aborting backup up after signal INT

Output from DumpPreUserCmd: Got reply: ok: backup of 192.168.1.152 canceled
||[[Image:007-BPC-ResumeDeLaSauvegarde.png|center|top|330px|border]]
|}
</center>


'''Si une expiration du délais de connexion est rencontrée'''

Message dans le journal BackupPC de cette machine.

<center>
{| style="background: {{{color|#FFEED9}}}; border: 1px dashed; width:70%"
|- style="vertical-align:bottom;font-family: Courier New;"
|
Output from DumpPreUserCmd: ssh: connect to host 192.168.1.152 port 2222: Connection timed out<br>
Output from DumpPreUserCmd: ssh: connect to host 192.168.1.152 port 2222: Connection timed out<br>
Output from DumpPreUserCmd: ssh: connect to host 192.168.1.152 port 2222: Connection timed out<br>
Output from DumpPreUserCmd: Null message body; hope that's ok<br>
Aborting backup up after signal INT<br>
Output from DumpPreUserCmd: Got reply: ok: <span style="color:red">backup of 192.168.1.152 canceled</span>
|}
</center>


''Pour désactiver le blocage des sauvegardes pour cette machine''

# Changer ce nombre.
# Entrer 0.0 > Arrêter/annuler la sauvegarde.
# Cliquer le nom de la machine: 192.168.1.152.
# On est de retour à la page d'accueil de cette machine.
# Message au retour d'une Expiration du délais de connexion.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:008-BPC-DesactiverBlocage-A.png|center|top|350px|border]]
||[[Image:008-BPC-DesactiverBlocage-B.png|center|top|350px|border]]
||[[Image:008-BPC-DesactiverBlocage-C.png|center|top|350px|border]]
|}
</center>

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:008-BPC-DesactiverBlocage-D.png|center|top|350px|border]]
||[[Image:008-BPC-DesactiverBlocage-E.png|center|top|350px|border]]
|}
</center>

=== Script de post-sauvegarde ===

'''Si la désactivation d'AutoBlock est non fonctionnel'''

# Courriel reçu par <code>EMailAdminUserName@EMailUserDestDomain</code> ''(admin@micronator-101.org)''.
# Message affiché sur la page d'accueil de la machine en question.<br>Cliquer: Changer ce nombre.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:010-BPC-Post-abNonFonctionnel-A.png|center|top|450px|border]]
||[[Image:010-BPC-Post-abNonFonctionnel-B.png|center|top|450px|border]]
|}
</center>

# Entrer 0.0 > Arrêter/annuler la sauvegarde.
# Cliquer le nom de la machine: 192.168.1.152 pour retourner à la page d'accueil de cette machine.

<center>
{| class="wikitable"
|- style="vertical-align:top;"
|[[Image:010-BPC-Post-abNonFonctionnel-D.png|center|top|450px|border]]
||[[Image:010-BPC-Post-abNonFonctionnel-E.png|center|top|450px|border]]
|}
</center>
<br>

<span style="font-size:120%">'''Mot de la fin'''</span>

Cette marche à suivre s'ajoute aux précédentes afin de pourvoir faire une sauvegarde complète des Serveurs SME créés avec ces dernières.

* Description de l'installation d'Odoo-11 sur un Serveur SME-9.2: https://wiki.contribs.org/Odoo-11.
* Description des étapes pour assurer une connexion sécuritaire à Odoo-11 roulant sur un Serveur SME: https://wiki.contribs.org/Odoo-11_%26_HTTPS.
* Description des étapes pour créer un serveur de test/développement pour vérifier les mises à jour d'Odoo-11, etc: https://wiki.contribs.org/Odoo-11_%26_serveur_de_test/dev


[[Image:Odoo-11-BanniereDeLaVictoire-APT.png|caption|36px]]&nbsp;&nbsp;Victoire totale, hissons la bannière de la victoire.
<br>
<br>

----
<references/>

[[Category:Howto]] [[Category:Howto/fr]]
2,785

edits

Navigation menu