Table des matières
Dernière mise-à-jour : 2020/03/15 09:52
SED901 - Administration de la Sauvegarde de Serveurs Linux
Quels sont les LABs de ce cours ?
- LAB #1 - Importation de vos Machines Virtuelles
- LAB #2 - Outils Classiques de Sauvegarde
- LAB #3 - Que Sauvegarder en Priorité ?
- LAB #4 - Rsync
- LAB #5 - Backup-PC
- LAB #6 - Bacula
- LAB #7 - AMANDA (Advanced Maryland Automated Disk Archiver)
Types de Sauvegardes
Sauvegarde complète
Dans ce cas on sauvegarde tous les fichiers et dossiers, toute la partition ou tout le disque :
La restauration nécessite :
- La dernière sauvegarde complète.
Avantage :
- Restauration plus rapide et plus simple que les restaurations à partir de sauvegardes différentielles et incrémentales.
Inconvénient :
- Nécessite plus d'espace de stockage que les sauvegardes différentielles et incrémentales.
Sauvegarde différentielle
Dans ce cas on sauvegarde des données modifiées ou nouvellement ajoutées sur la base de la dernière sauvegarde complète :
La restauration nécessite :
- La dernière sauvegarde complète,
- La dernière sauvegarde différentielle.
Avantage :
- Restauration plus rapide que la restauration à partir d'une sauvegarde incrémentale.
Inconvénient :
- Nécessite plus d'espace de stockage que la sauvegarde incrémentale.
Sauvegarde incrémentale
Dans ce cas, on ne sauvegarde que ce qui a changé depuis la dernière sauvegarde quelle qu'elle soit (complète, différentielle ou incrémentale) :
La restauration nécessite :
- La dernière sauvegarde complète,
- Toutes les sauvegardes incrémentales effectuées depuis, et dans l'ordre.
Avantage :
- Sauvegarde plus rapide que la sauvegarde complète ou différentielle,
- Nécessite moins d'espace de stockage que la sauvegarde différentielle.
Inconvénient :
- Plus longue à restaurer.
Sauvegarde décrémentale
Dans ce cas on sauvegarde tous les fichiers puis on produit une sauvegarde de ce qui a changé depuis la dernière sauvegarde complète. Cette sauvegarde est appelée une sauvegarde décrémentale :
La restauration nécessite :
- La dernière sauvegarde complète.
La restauration de J-1 nécessite :
- La dernière sauvegarde complète,
- La sauvegarde décrémentale J.
Par exemple pour obtenir un état du système J1 quand on est à J2, il convient de restaurer la sauvegarde complète de J2 qui est en réalité J2+J1 puis la sauvegarde décrémentale -J2. De cette façon et d'une manière mathématique on obtient : J2 + J1 -J2 = J1.
Avantage :
- Restauration plus rapide et plus simple que les restaurations à partir de sauvegardes différentielles et incrémentales.
Inconvénient :
- Nécessite plus de manipulation de données à chaque sauvegarde.
Outils de Sauvegarde
Outils de Sauvegarde Unidirectionnelle
Ces outils sauvegardent des fichiers vers un répertoire local ou distant dans un seul sens.
Ce premier tableau compare les outils par rapport aux caractéristiques et aux capacités des opérations de sauvegarde :
Outil | Backend | Sauvegarde différentielle | Sauvegarde incrémentale | Sauvegarde décrémentale | Planification incorporée | Restauration incorporée | Chiffrement | Compression | Site |
---|---|---|---|---|---|---|---|---|---|
AMANDA | tar, gzip | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | AMANDA |
Areca Backup | Aucun | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | Areca Backup |
bacula (Bareos) | MySQL | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | bacula |
BackInTime | rsync, diff, meld | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | BackInTime |
BackupPC | rsync, samba, tar | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | BackupPC |
Dar | Aucun | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | Dar |
Déjà Dup | duplicity | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | Duplicity |
Grsync | rsync | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | Grsync |
luckyBackup | rsync | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | luckyBackup |
SBackup | Aucun | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | SBackup |
A Faire - Consultez la page List of backup software sur Wikipedia pour plus d'informations.
Ce deuxième tableau compare les outils triés par la date de dernière version connue :
Outil | Ecrit en | Licence | Dernière Version | Date Version | Linux | Windows | Mac | Site Web |
---|---|---|---|---|---|---|---|---|
Dar | C++ | GPL | 2.6.2 | 09/02/2019 | ![]() | ![]() | ![]() | Dar |
Bacula (Bareos) | C, C++ | GNU Affero General Public License v3.0 | 9.4.2 | 04/02/2019 | ![]() | ![]() | ![]() | bacula |
BackupPC | Perl | GPL v3.0 | 4.3.0 | 25/11/2018 | ![]() | ![]() | ![]() | BackupPC |
luckyBackup | C++ | GPL v3.0 | 0.5.0 | 18/11/2018 | ![]() | ![]() | ![]() | luckyBackup |
Déjà Dup (Duplicity) | Python | GPL | 0.7.18.2 | 17/11/2018 | ![]() | ![]() | ![]() | Duplicity |
AMANDA | C, Perl | GPL, LGPL, Apache, Amanda License | 3.5.1 | 01/12/2017 | ![]() | ![]() | ![]() | AMANDA |
BackInTime | Python3 | GPL | 1.1.24 | 07/11/2017 | ![]() | ![]() | ![]() | BackInTime |
Grsync | GTK | GPL | 1.2.6 | 15/03/2016 | ![]() | ![]() | ![]() | Grsync |
Areca Backup | Java | GPLv2 | 7.5 | 26/08/2015 | ![]() | ![]() | ![]() | Areca Backup |
SBackup | GTK | GPLv2 | 0.11.6 | 24/02/2014 | ![]() | ![]() | ![]() | SBackup |
Outils de Sauvegarde Multidirectionnelle
Ces outils synchronisent les fichiers entre deux serveurs.
Ce premier tableau compare les outils par rapport aux caractéristiques et aux capacités des opérations de sauvegarde :
Outil | Backend | Sauvegarde différentielle | Sauvegarde incrémentale | Sauvegarde décrémentale | Planification incorporée | Restauration incorporée | Chiffrement | Compression |
---|---|---|---|---|---|---|---|---|
FullSync | smb, ftp, sftp | ![]() | ![]() | ![]() | ![]() | S/O | ![]() | ![]() |
FreeFileSync | Aucun | ![]() | ![]() | ![]() | ![]() | S/O | ![]() | ![]() |
unison | SSH, RSH | ![]() | ![]() | ![]() | ![]() | S/O | ![]() | ![]() |
Synkron | Aucun | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
A Faire - Consultez la page Comparison of file synchronization software sur Wikipedia pour plus d'informations..
Ce deuxième tableau compare les outils triés par la date de dernière version connue :
Outil | Ecrit en | Licence | Dernière Version | Date Version | Linux | Windows | Mac | Site Web |
---|---|---|---|---|---|---|---|---|
FreeFileSync | Divers | GPL v3.0 | 10.8 | 05/01/2019 | ![]() | ![]() | ![]() | FreeFileSync |
unison | OCaml | GPL v3.0 | 2.51.2 | 27/01/2018 | ![]() | ![]() | ![]() | unison |
FullSync | Java | GPLv2 | 0.10.4 | 05/04/2016 | ![]() | ![]() | ![]() | FullSync |
Synkron | C++ | GPL v2 | 1.6.2 | 25/01/2011 | ![]() | ![]() | ![]() | Synkron |
Outils de Sauvegarde des Partitions
Ce premier tableau compare les outils par rapport aux caractéristiques et aux capacités des opérations de sauvegarde :
Outil | Backend | Sauvegarde différentielle | Sauvegarde incrémentale | Sauvegarde décrémentale | Planification incorporée | Restauration incorporée | Chiffrement | Compression |
---|---|---|---|---|---|---|---|---|
CloneZilla | SSH, samba, NFS | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Partclone | Aucun | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
partimage | Aucun | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
A Faire - Consultez la page Comparison of disk cloning software sur Wikipedia pour plus d'informations.
Ce deuxième tableau compare les outils triés par la date de dernière version connue :
Outil | Ecrit en | Licence | Dernière Version | Date Version | Linux | Windows | Mac | Site Web |
---|---|---|---|---|---|---|---|---|
CloneZilla | Perl, Unix shell | GPL | 2.6.0-37 | 10/01/2019 | ![]() | ![]() | ![]() | CloneZilla |
Partclone | C | GPL | 0.2.89 | 05/07/2016 | ![]() | ![]() | ![]() | Partclone |
partimage | C | GPL | 0.6.9 | 25/07/2010 | ![]() | ![]() | ![]() | Partimage |
LAB #1 - Importation de vos Machines Virtuelles
Ouvrez VirtualBox et importez les deux machines virtuelles Debian_9 et CentOS_7 :
Fichier > Importer un appareil virtuel ...
Les deux machines virtuelles doivent être dans le réseau NAT NatNetwork :
Machine | Nom d'hôte | Adresse IP | Redirection de Port |
---|---|---|---|
Debian_9 | debian9.i2tch.loc | 10.0.2.9 | 2222 |
CentOS_7 | centos7.i2tch.loc | 10.0.2.16 | 2322 |
Les noms d'utilisateurs et les mots de passe sont identiques pour chaque machine :
Utilisateur | Mot de Passe |
---|---|
trainee | trainee |
root | fenestros |
Créez les redirections de ports dans le réseau NAT NatNetwork de VirtualBox (Fichier > Paramètres > Réseau > NatNetwork > Redirection de ports) selon le tableau suivant :
Nom | Protocole | IP hôte | Port hôte | IP invité | Port invité |
---|---|---|---|---|---|
ssh01 | TCP | 127.0.0.1 | 2222 | 10.0.2.9 | 22 |
ssh02 | TCP | 127.0.0.1 | 2322 | 10.0.2.16 | 22 |
Connexion à vos Machines Virtuelles
Vous devez vous connecter aux machines virtuelles de la façon suivante :
MAC et Linux
Ouvrez un terminal et tapez la commande suivante pour la machine Debian_9 :
$ ssh -l trainee localhost -p 2222
Ouvrez un autre terminal et tapez la commande suivante pour la machine CentOS_7 :
$ ssh -l trainee localhost -p 2322
Windows
Ouvrez putty et utilisez les informations suivantes pour vous connecter à Debian_9 :
- Host Name –> localhost
- Port –> 2222
Ouvrez putty et utilisez les informations suivantes pour vous connecter à CentOS_7 :
- Host Name –> localhost
- Port –> 2322
Connectez-vous à la machine virtuelle CentOS_7, arrêtez le pare-feu et configurez SELinux en mode permissive :
[root@centos7 tmp]# systemctl stop firewalld [root@centos7 tmp]# systemctl disable firewalld Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service. [root@centos7 tmp]# setenforce permissive [root@centos7 tmp]# vi /etc/selinux/config [root@centos7 tmp]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
Dernièrement, modifiez le fichier /etc/hosts dans la machine virtuelle Debian_9 :
trainee@debian9:~$ su - Mot de passe : root@debian9:~# vi /etc/hosts root@debian9:~# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 debian9.i2tch.loc debian9 10.0.2.9 debian9.i2tch.loc 10.0.2.16 centos7.i2tch.loc # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
LAB #2 - Outils classiques de sauvegarde
Préparation
Afin de poursuivre, il convient de créer une arborescence à sauvegarder :
root@debian9:~# mkdir -p /test/repY; mkdir /test/repZ root@debian9:~# cd /test/repY; touch Y1 Y2 Y3 root@debian9:/test/repY# cd /test/repZ; touch Z1 Z2 root@debian9:/test/repZ# ls -lR /test /test: total 8 drwxr-xr-x 2 root root 4096 févr. 16 11:50 repY drwxr-xr-x 2 root root 4096 févr. 16 11:50 repZ /test/repY: total 0 -rw-r--r-- 1 root root 0 févr. 16 11:50 Y1 -rw-r--r-- 1 root root 0 févr. 16 11:50 Y2 -rw-r--r-- 1 root root 0 févr. 16 11:50 Y3 /test/repZ: total 0 -rw-r--r-- 1 root root 0 févr. 16 11:50 Z1 -rw-r--r-- 1 root root 0 févr. 16 11:50 Z2
La Commande tar
Présentation
Le programme tar a été originellement prévu pour sauvegarder sur des bandes magnétiques, d'où son nom issu de tape archiver.
La commande tar peut sauvegarder vers :
- un fichier spécial, par exemple le nom d'un lecteur de bande,
- un fichier ordinaire sur disque,
- la sortie standard pour être utilisé dans un pipe.
Travailler avec la Commande tar
Vous allez maintenant sauvegarder votre dossier test ainsi que son contenu vers un fichier :
root@debian9:/test/repZ# tar cvf /tmp/test.tar /test tar: Removing leading `/' from member names /test/ /test/repY/ /test/repY/Y1 /test/repY/Y3 /test/repY/Y2 /test/repZ/ /test/repZ/Z2 /test/repZ/Z1
Pour visualiser la table of contents de votre sauvegarde, utilisez la commande suivante :
root@debian9:/test/repZ# tar tvf /tmp/test.tar drwxr-xr-x root/root 0 2019-02-16 11:50 test/ drwxr-xr-x root/root 0 2019-02-16 11:50 test/repY/ -rw-r--r-- root/root 0 2019-02-16 11:50 test/repY/Y1 -rw-r--r-- root/root 0 2019-02-16 11:50 test/repY/Y2 -rw-r--r-- root/root 0 2019-02-16 11:50 test/repY/Y3 drwxr-xr-x root/root 0 2019-02-16 11:50 test/repZ/ -rw-r--r-- root/root 0 2019-02-16 11:50 test/repZ/Z1 -rw-r--r-- root/root 0 2019-02-16 11:50 test/repZ/Z2
Afin de créer une sauvegarde incrémentale, vous avez besoin de créer un fichier qui servira de référence de date :
root@debian9:/test/repZ# touch /tmp/dateref
Modifiez maintenant deux des fichiers de votre arborescence test :
root@debian9:/test/repZ# echo "Debian is great \!" > /test/repY/Y1 root@debian9:/test/repZ# echo "Ubuntu is wonderful \!" > /test/repZ/Z1
Pour procéder à votre sauvegarde incrémentale, vous devez sauvegarder uniquement les fichiers modifiés ou créés depuis la création de votre fichier /tmp/dateref.
Saisissez donc la commande suivante :
root@debian9:/test/repZ# tar -cvf /tmp/incremental.tar -N /tmp/dateref /test tar: Removing leading `/' from member names /test/ /test/repY/ /test/repY/Y1 tar: /test/repY/Y3: file is unchanged; not dumped tar: /test/repY/Y2: file is unchanged; not dumped /test/repZ/ tar: /test/repZ/Z2: file is unchanged; not dumped /test/repZ/Z1
Important - Notez l'utilisation de l'option -N avec l’argument /tmp/dateref qui permet d'identifier les fichiers modifiés ou créés depuis la création de /tmp/dateref.
Contrôlez maintenant le contenu de l'archive /tmp/incremental.tar :
root@debian9:/test/repZ# tar tvf /tmp/incremental.tar drwxr-xr-x root/root 0 2019-02-16 11:50 test/ drwxr-xr-x root/root 0 2019-02-16 11:50 test/repY/ -rw-r--r-- root/root 19 2019-02-16 11:52 test/repY/Y1 drwxr-xr-x root/root 0 2019-02-16 11:50 test/repZ/ -rw-r--r-- root/root 23 2019-02-16 11:52 test/repZ/Z1
Supprimez maintenant le contenu du répertoire test :
root@debian9:/test/repZ# rm -rf /test/*
Important - Notez que le système vous permet de supprimer le répertoire /test/repZ, or vous vous situez dans ce même répertoire !
Afin de pouvoir restaurer les fichiers de votre première sauvegarde, placez-vous à la racine de votre système et restaurez le contenu de votre répertoire test en saisissant la commande tar suivante :
root@debian9:/test/repZ# cd / root@debian9:/# tar xvf /tmp/test.tar test/ test/repY/ test/repY/Y1 test/repY/Y2 test/repY/Y3 test/repZ/ test/repZ/Z1 test/repZ/Z2
La Commande GPL tar et la Compression
Dernièrement, la commande tar peut archiver en utilisant des algorithmes de compression :
Algorythme | Option de la commande tar |
---|---|
gzip | z |
bzip2 | j |
lzma | J |
cpio
Présentation
La commande cpio (Copy Input To Output). cpio peut gérer les archives au format tar. La différence majeure entre tar et cpio est que ce dernier stocke les chemins d'accès aux fichiers sauvgardés en même temps que les fichiers eux-mêmes. Ceci implique que dans le cas où le chemin absolu a été spécifié lors de la sauvegarde, il est impossible de restaurer un fichier à un autre emplacement que son emplacement d'origine.
Travailler avec la Commande cpio
Vous allez utiliser maintenant le logiciel cpio pour effectuer les sauvegardes et restaurations. Dans un premier temps, vous devez utiliser la commande find pour construire une liste de fichiers à sauvegarder :
root@debian9:/# find /test > /tmp/cpio.liste root@debian9:/# cat /tmp/cpio.liste /test /test/repY /test/repY/Y1 /test/repY/Y2 /test/repY/Y3 /test/repZ /test/repZ/Z1 /test/repZ/Z2
Sauvegardez maintenant les fichiers et répertoires référencés par le fichier /tmp/cpio.liste :
root@debian9:/# cpio -ov < /tmp/cpio.liste > /tmp/test.cpio /test /test/repY /test/repY/Y1 /test/repY/Y2 /test/repY/Y3 /test/repZ /test/repZ/Z1 /test/repZ/Z2 1 bloc
Consultez maintenant la table of contents de votre sauvegarde :
root@debian9:/# cpio -it < /tmp/test.cpio /test /test/repY /test/repY/Y1 /test/repY/Y2 /test/repY/Y3 /test/repZ /test/repZ/Z1 /test/repZ/Z2 1 bloc
Supprimez maintenant le répertoire /test/repY et son contenu :
root@debian9:/# rm -rf /test/repY
Contrôlez le bon déroulement de la suppression :
root@debian9:/# ls -lR /test /test: total 4 drwxr-xr-x 2 root root 4096 févr. 16 11:50 repZ /test/repZ: total 0 -rw-r--r-- 1 root root 0 févr. 16 11:50 Z1 -rw-r--r-- 1 root root 0 févr. 16 11:50 Z2
Restaurez les fichiers supprimés :
root@debian9:/# cpio -ivdum "/test/repY/*" < /tmp/test.cpio /test/repY/Y1 /test/repY/Y2 /test/repY/Y3 1 bloc
Important - Notez l'utilisation de la chaîne “/test/repY/*” qui permet de rechercher uniquement le répertoire repY ainsi que les fichiers Y1, Y2 et Y3 dans l'archive test.cpio.
Contrôlez le bon déroulement de la restauration :
root@debian9:/# ls -lR /test /test: total 8 drwxr-xr-x 2 root root 4096 févr. 16 11:58 repY drwxr-xr-x 2 root root 4096 févr. 16 11:50 repZ /test/repY: total 0 -rw-r--r-- 1 root root 0 févr. 16 11:50 Y1 -rw-r--r-- 1 root root 0 févr. 16 11:50 Y2 -rw-r--r-- 1 root root 0 févr. 16 11:50 Y3 /test/repZ: total 0 -rw-r--r-- 1 root root 0 févr. 16 11:50 Z1 -rw-r--r-- 1 root root 0 févr. 16 11:50 Z2
dd
Présentation
La commande dd n'est pas réellement une commande de sauvegarde.
La commande dd copie le fichier passé en entrée dans le fichier de sortie en limitant le nombre d'octets copiés par l'utilisation de deux options :
- count
- le nombre
- bs
- la taille du bloc à copier
Travailler avec la Commande dd
Vous allez utiliser maintenant le logiciel dd pour effectuer une sauvegarde de votre MBR et de la table des partitions.
Effectuez une sauvegarde de votre MBR qui se trouve dans les premiers 446 octets de votre disque /dev/sda :
root@debian9:/# dd if=/dev/sda of=/tmp/mbr.save bs=1 count=446 446+0 enregistrements lus 446+0 enregistrements écrits 446 bytes copied, 0,0134986 s, 33,0 kB/s
Effectuez maintenant une sauvegarde de votre table des partitions qui se trouve dans les 64 octets après les 446 précédemment sauvegardés :
root@debian9:/# dd if=/dev/sda of=/tmp/tblpart.save bs=1 count=64 skip=446 64+0 enregistrements lus 64+0 enregistrements écrits 64 bytes copied, 0,00349885 s, 18,3 kB/s
Important - Notez l'utilisation de l'option skip qui permet de positionner le début de la sauvegarde au 447ième octet.
dump et restore
Présentation
Les commandes dump et restore se basent sur le format d'enregistrement des données ( ext3 ). Pour cette raison il n'est pas possible de sauvegarder des répertoires à l'intérieur d'un système de fichiers mais uniquement des systèmes de fichiers complets.
Il est important de noter que le système de fichier ne doit pas être utilisé pendant le processus de dump. Pour cette raison il est normalement conseillé de démonter le système de fichiers.
Il existe 10 niveaux de dump possibles de 0 à 9. Lors d'un dump le niveau est spécifié. Chaque fois qu'un dump est effectué, cette information est sauvegardée dans le fichier /etc/dumpdates.
Par définition un dump de niveau 0 est une sauvegarde complète tandis que le dump de niveau 1 est une sauvegarde incrémentale.
Notez que les fichiers sont sauvegardés avec des nom relatifs. Ceci implique que vous devez vous positionner dans le système de fichiers lors de la restauration avec la commande restore.
LAB #3 - Que Sauvegarder en Priorité ?
Sauvegarde de la Liste des Paquets
Paquets *.deb
Sauvegarde
Utilisez la commande dpkg pour créer un fichier contenant une liste des paquets installés :
root@debian9:~# dpkg --get-selections > liste-des-paquets_`hostname`_`date +%Y-%m-%d-%H-%M`
Consultez le contenu de ce fichier :
root@debian9:~# more liste-des-paquets_debian9_2019-02-18-16-51 acl install adduser install adwaita-icon-theme install aglfn install alsa-utils install amanda-client install amanda-common install anacron install ant install ant-optional install apt install apt-listchanges install apt-utils install aspell install aspell-en install aspell-fr install at-spi2-core install avahi-autoipd install avahi-daemon install base-files install base-passwd install bash install bash-completion install bind9-host install bluetooth install bluez install bsd-mailx install bsdmainutils install bsdutils install busybox install bzip2 install ca-certificates install ca-certificates-java install coinor-libcbc3 install coinor-libcgl1 install coinor-libclp1 install coinor-libcoinmp1v5:amd64 install coinor-libcoinutils3v5 install coinor-libosi1v5 install --Plus--(2%)
Copiez maintenant le fichier de /etc/apt/sources.list :
root@debian9:~# cp /etc/apt/sources.list sources.list
Important - Il convient ensuite de sauvegarder les deux fichiers liste-des-paquets_* et sources.list sur un support externe.
Restauration
Récupérez les deux fichiers liste-des-paquets_* et sources.list du support externe.
Restaurez le fichier sources.list :
root@debian9:~# cp sources.list /etc/apt/sources.list
Mettez à jour les listes des paquets disponibles :
root@debian9:~# apt-get update
Installez dselect :
root@debian9:~# apt-get install dselect
Mettez à jour l'information sur les paquets disponibles dans dselect :
root@debian9:~# dselect update Ign:1 http://ftp.fr.debian.org/debian stretch InRelease Atteint:2 http://ftp.fr.debian.org/debian stretch-updates InRelease Atteint:4 http://ftp.fr.debian.org/debian stretch Release Atteint:3 http://security-cdn.debian.org/debian-security stretch/updates InRelease Lecture des listes de paquets... Fait Fusion des informations disponibles Remplacement de l'information sur les paquets disponibles, en utilisant /var/cache/apt/available. L'information sur 50874 paquets a été mise à jour.
Restaurez le contenu du fichier liste-des-paquets* :
root@debian9:~# dpkg --set-selections < liste-des-paquets_debian9_2019-02-18-16-51
Installez ou mettez à jour tous les paquets dans le fichier liste-des-paquets_* :
root@debian9:~# apt-get -u dselect-upgrade Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants seront mis à jour : base-files ca-certificates-java cups-client cups-common firefox-esr firefox-esr-l10n-fr fonts-opensymbol ghostscript gnupg gnupg-agent gpgv libc-bin libc-l10n libc6 libcups2 libcupsimage2 libcurl3 libcurl3-gnutls libgd3 libgpod-common libgpod4 libgs9 libgs9-common libpam-systemd libpq5 libqt5core5a libqt5dbus5 libqt5gui5 libqt5network5 libqt5printsupport5 libqt5widgets5 libreoffice libreoffice-avmedia-backend-gstreamer libreoffice-base libreoffice-base-core libreoffice-base-drivers libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw libreoffice-gtk2 libreoffice-help-en-us libreoffice-help-fr libreoffice-impress libreoffice-java-common libreoffice-l10n-fr libreoffice-librelogo libreoffice-math libreoffice-nlpsolver libreoffice-ogltrans libreoffice-pdfimport libreoffice-report-builder libreoffice-report-builder-bin libreoffice-script-provider-bsh libreoffice-script-provider-js libreoffice-script-provider-python libreoffice-sdbc-hsqldb libreoffice-sdbc-postgresql libreoffice-style-galaxy libreoffice-style-tango libreoffice-wiki-publisher libreoffice-writer libsmbclient libssh-gcrypt-4 libsystemd0 libudev1 libwayland-client0 libwayland-cursor0 libwayland-server0 libwbclient0 libxapian30 linux-image-4.9.0-8-amd64 locales multiarch-support openssh-client openssh-server openssh-sftp-server python3-uno qt5-gtk-platformtheme rtkit samba-libs systemd systemd-sysv udev uno-libs3 ure 86 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 214 Mo dans les archives. Après cette opération, 214 ko d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] O
Paquets *.rpm
Sauvegarde
Supprimez les fichiers de verrouillage de la base de données RPM :
[root@centos7 ~]# rm -f /var/lib/rpm/__db*
Sauvegardez les bases de données RPM :
[root@centos7 ~]# tar czvf $(hostname).rpmdatabase.tar.gz /var/lib/rpm tar: Removing leading `/' from member names /var/lib/rpm/ /var/lib/rpm/.dbenv.lock /var/lib/rpm/.rpm.lock /var/lib/rpm/Basenames /var/lib/rpm/Conflictname /var/lib/rpm/Dirnames /var/lib/rpm/Group /var/lib/rpm/Installtid /var/lib/rpm/Name /var/lib/rpm/Obsoletename /var/lib/rpm/Packages /var/lib/rpm/Providename /var/lib/rpm/Requirename /var/lib/rpm/Sha1header /var/lib/rpm/Sigmd5 /var/lib/rpm/Triggername
Pour sauvegarder la liste des paquets à l'identique en termes de version, utilisez la commande RPM :
[root@centos7 ~]# rpm -qa > liste-des-paquets_`hostname`_`date +%Y-%m-%d-%H-%M`
Consultez le contenu de ce fichier :
[root@centos7 ~]# more liste-des-paquets_centos7.i2tch.loc_2019-02-18-17-10 pulseaudio-gdm-hooks-10.0-5.el7.x86_64 lrzsz-0.12.20-36.el7.x86_64 avahi-gobject-0.6.31-19.el7.x86_64 opus-1.0.2-6.el7.x86_64 bind-license-9.9.4-72.el7.noarch perl-ExtUtils-Embed-1.30-294.el7_6.noarch expat-2.1.0-10.el7_3.x86_64 gnome-initial-setup-3.28.0-1.el7.x86_64 alsa-utils-1.1.6-1.el7.x86_64 perl-parent-0.225-244.el7.noarch fwupdate-efi-12-5.el7.centos.x86_64 pixman-0.34.0-1.el7.x86_64 vinagre-3.22.0-9.el7.x86_64 python-blivet-0.61.15.72-1.el7.noarch pytalloc-2.1.13-1.el7.x86_64 libXext-1.3.3-3.el7.x86_64 libtool-ltdl-2.4.2-22.el7_3.x86_64 gnome-weather-3.26.0-1.el7.noarch setroubleshoot-plugins-3.0.67-3.el7.noarch fftw-libs-double-3.3.3-8.el7.x86_64 --More--(1%)
Important - Il convient ensuite de sauvegarder les deux fichiers liste-des-paquets_* et $(hostname).rpmdatabase.tar.gz sur un support externe.
Restauration
Récupérez les deux fichiers liste-des-paquets_* et $(hostname).rpmdatabase.tar.gz du support externe à la racine du système de fichiers :
[root@centos7 ~]# cp liste-des-paquets_centos7.i2tch.loc_2019-02-18-17-10 centos7.i2tch.loc.rpmdatabase.tar.gz /
Placez-vous à la racine du système de fichiers et restaurez les bases de données RPM :
[root@centos7 ~]# cd / [root@centos7 /]# tar xvf centos7.i2tch.loc.rpmdatabase.tar.gz var/lib/rpm/ var/lib/rpm/.dbenv.lock var/lib/rpm/.rpm.lock var/lib/rpm/Basenames var/lib/rpm/Conflictname var/lib/rpm/Dirnames var/lib/rpm/Group var/lib/rpm/Installtid var/lib/rpm/Name var/lib/rpm/Obsoletename var/lib/rpm/Packages var/lib/rpm/Providename var/lib/rpm/Requirename var/lib/rpm/Sha1header var/lib/rpm/Sigmd5 var/lib/rpm/Triggername
Utilisez YUM pour restaurer les paquets :
[root@centos7 /]# yum -y install $(cat liste-des-paquets_centos7.i2tch.loc_2019-02-18-17-10)
Sauvegarde d'un Mémo sur la Structure du Disque Dur Système
Sous Debian / Ubuntu
root@debian9:~# fdisk -l /dev/sda > structure.list root@debian9:~# more structure.list Disque /dev/sda : 20 GiB, 21474836480 octets, 41943040 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x53ca058b Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 37748735 37746688 18G 83 Linux /dev/sda2 37750782 41940991 4190210 2G 5 Étendue /dev/sda5 37750784 41940991 4190208 2G 82 partition d'échange L inux / Solaris
Sous Red Hat / CentOS
[root@centos7 /]# cd ~ [root@centos7 ~]# fdisk -l /dev/sda > structure.list [root@centos7 ~]# cat structure.list Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000c5a90 Device Boot Start End Blocks Id System /dev/sda1 * 2048 411647 204800 83 Linux /dev/sda2 411648 20891647 10240000 83 Linux /dev/sda3 20891648 25083903 2096128 82 Linux swap / Solaris
Important - Il convient ensuite de sauvegarder le fichier structure.list sur un support externe.
Sauvegarde d'un Mémo sur les Points de Montage du Disque Dur Système
Sous Debian / Ubuntu
Saisissez la commande suivante :
root@debian9:~# df -h | grep "^/dev/" > montages.list root@debian9:~# cat montages.list /dev/sda1 18G 3,3G 14G 20% /
Sous Red Hat / CentOS
Saisissez la commande suivante :
[root@centos7 ~]# df -h | grep "^/dev/" > montages.list [root@centos7 ~]# cat montages.list /dev/sda2 9.8G 5.1G 4.7G 53% / /dev/sda1 197M 174M 24M 89% /boot
Important - Il convient ensuite de sauvegarder le fichier montages.list sur un support externe.
Sauvegarde du Chargeur de Démarrage
GRUB Legacy
# cp /boot/grub/menu.lst grubmenu.lst
GRUB 2 avec BIOS
Saisissez les commandes suivantes :
Debian / Ubuntu
root@debian9:~# cp /boot/grub/grub.cfg grub.cfg root@debian9:~# grub-mkdevicemap root@debian9:~# cp /boot/grub/device.map device.map
Sous Red Hat / CentOS
[root@centos7 ~]# cp /boot/grub2/grub.cfg grub.cfg [root@centos7 ~]# cp /boot/grub2/device.map device.map
GRUB 2 avec EFI
Debian / Ubuntu
# cp /boot/edi/EFI/debian/grub.cfg grub.cfg # grub-mkdevicemap # cp /boot/grub/device.map device.map
Sous Red Hat / CentOS
# cp /boot/efi/EFI/redhat/grub.cfg grub.cfg # cp /boot/grub2/device.map device.map
Important - Il convient ensuite de sauvegarder le fichier menu.lst ou grub.cfg et le fichier device.map sur un support externe.
Sauvegarde des Dossiers Utilisateurs
Debian / Ubuntu
root@debian9:~# cp -apv /home/ .
Red Hat / CentOS
[root@centos7 ~]# cp -apv /home/ .
Important - Il convient ensuite de sauvegarder le dossier /root/home sur un support externe.
LAB #4 - Rsync
Présentation
Rsync ou Remote Sync est un utilitaire de synchronisation de fichiers qui utilise un algorithme qui minimise la quantité de données copiée en ne copiant que les parties des fichiers qui ont été modifiées.
Rsync n'est pas installé par défaut dans Debian 8. Installez donc l'utilitaire :
root@debian9:~# apt-get install rsync
Travaller avec la Commande rsync
Synchroniser Localement
Créez les répertoires /test/repA et mkdir /test/repB :
root@debian9:/# mkdir /test/repA; mkdir /test/repB
Créez maintenant 20 fichiers vides dans le répertoire /test/repA :
root@debian9:/# touch /test/repA/file{1..20} root@debian9:/# ls -l /test/repA/ total 0 -rw-r--r-- 1 root root 0 févr. 16 12:02 file1 -rw-r--r-- 1 root root 0 févr. 16 12:02 file10 -rw-r--r-- 1 root root 0 févr. 16 12:02 file11 -rw-r--r-- 1 root root 0 févr. 16 12:02 file12 -rw-r--r-- 1 root root 0 févr. 16 12:02 file13 -rw-r--r-- 1 root root 0 févr. 16 12:02 file14 -rw-r--r-- 1 root root 0 févr. 16 12:02 file15 -rw-r--r-- 1 root root 0 févr. 16 12:02 file16 -rw-r--r-- 1 root root 0 févr. 16 12:02 file17 -rw-r--r-- 1 root root 0 févr. 16 12:02 file18 -rw-r--r-- 1 root root 0 févr. 16 12:02 file19 -rw-r--r-- 1 root root 0 févr. 16 12:02 file2 -rw-r--r-- 1 root root 0 févr. 16 12:02 file20 -rw-r--r-- 1 root root 0 févr. 16 12:02 file3 -rw-r--r-- 1 root root 0 févr. 16 12:02 file4 -rw-r--r-- 1 root root 0 févr. 16 12:02 file5 -rw-r--r-- 1 root root 0 févr. 16 12:02 file6 -rw-r--r-- 1 root root 0 févr. 16 12:02 file7 -rw-r--r-- 1 root root 0 févr. 16 12:02 file8 -rw-r--r-- 1 root root 0 févr. 16 12:02 file9
Pout synchroniser les fichiers de /test/repA vers le répertoire /test/repB, utilisez l'option -r de la commande rsync :
root@debian9:/# rsync -r /test/repA/ /test/repB root@debian9:/# ls -l /test/repB total 0 -rw-r--r-- 1 root root 0 févr. 16 12:04 file1 -rw-r--r-- 1 root root 0 févr. 16 12:04 file10 -rw-r--r-- 1 root root 0 févr. 16 12:04 file11 -rw-r--r-- 1 root root 0 févr. 16 12:04 file12 -rw-r--r-- 1 root root 0 févr. 16 12:04 file13 -rw-r--r-- 1 root root 0 févr. 16 12:04 file14 -rw-r--r-- 1 root root 0 févr. 16 12:04 file15 -rw-r--r-- 1 root root 0 févr. 16 12:04 file16 -rw-r--r-- 1 root root 0 févr. 16 12:04 file17 -rw-r--r-- 1 root root 0 févr. 16 12:04 file18 -rw-r--r-- 1 root root 0 févr. 16 12:04 file19 -rw-r--r-- 1 root root 0 févr. 16 12:04 file2 -rw-r--r-- 1 root root 0 févr. 16 12:04 file20 -rw-r--r-- 1 root root 0 févr. 16 12:04 file3 -rw-r--r-- 1 root root 0 févr. 16 12:04 file4 -rw-r--r-- 1 root root 0 févr. 16 12:04 file5 -rw-r--r-- 1 root root 0 févr. 16 12:04 file6 -rw-r--r-- 1 root root 0 févr. 16 12:04 file7 -rw-r--r-- 1 root root 0 févr. 16 12:04 file8 -rw-r--r-- 1 root root 0 févr. 16 12:04 file9
Important - Notez que l'horodatage des fichiers synchronisés n'a pas été préservé.
Supprimez les fichiers dans /test/repB :
root@debian9:/# rm -rf /test/repB/* root@debian9:/# ls -l /test/repB total 0
Pour synchroniser les fichiers de /test/repA vers le répertoire /test/repB, utilisez l'option -a de la commande rsync :
root@debian9:/# rsync -a /test/repA/ /test/repB root@debian9:/# ls -l /test/repB total 0 -rw-r--r-- 1 root root 0 févr. 16 12:02 file1 -rw-r--r-- 1 root root 0 févr. 16 12:02 file10 -rw-r--r-- 1 root root 0 févr. 16 12:02 file11 -rw-r--r-- 1 root root 0 févr. 16 12:02 file12 -rw-r--r-- 1 root root 0 févr. 16 12:02 file13 -rw-r--r-- 1 root root 0 févr. 16 12:02 file14 -rw-r--r-- 1 root root 0 févr. 16 12:02 file15 -rw-r--r-- 1 root root 0 févr. 16 12:02 file16 -rw-r--r-- 1 root root 0 févr. 16 12:02 file17 -rw-r--r-- 1 root root 0 févr. 16 12:02 file18 -rw-r--r-- 1 root root 0 févr. 16 12:02 file19 -rw-r--r-- 1 root root 0 févr. 16 12:02 file2 -rw-r--r-- 1 root root 0 févr. 16 12:02 file20 -rw-r--r-- 1 root root 0 févr. 16 12:02 file3 -rw-r--r-- 1 root root 0 févr. 16 12:02 file4 -rw-r--r-- 1 root root 0 févr. 16 12:02 file5 -rw-r--r-- 1 root root 0 févr. 16 12:02 file6 -rw-r--r-- 1 root root 0 févr. 16 12:02 file7 -rw-r--r-- 1 root root 0 févr. 16 12:02 file8 -rw-r--r-- 1 root root 0 févr. 16 12:02 file9
Important - Notez que non seulement l'option -a de la commande rsync synchronise les fichiers d'une manière récursive, toute comme l'option -r, mais elle préserve aussi les fichiers spéciaux, les liens symboliques, les permissions, les propriétaires, les groupes ainsi que les dates de modification des fichiers.
De nouveau, supprimez les fichiers dans le répertoire /test/repB :
root@debian9:/# rm -rf /test/repB/* root@debian9:/# ls -l /test/repB total 0
Exécutez maintenant le commande suivante et constatez le résultat :
root@debian9:/# rsync -a /test/repA /test/repB root@debian9:/# ls -l /test/repB total 4 drwxr-xr-x 2 root root 4096 févr. 16 12:02 repA root@debian9:/# ls -l /test/repB/repA total 0 -rw-r--r-- 1 root root 0 févr. 16 12:02 file1 -rw-r--r-- 1 root root 0 févr. 16 12:02 file10 -rw-r--r-- 1 root root 0 févr. 16 12:02 file11 -rw-r--r-- 1 root root 0 févr. 16 12:02 file12 -rw-r--r-- 1 root root 0 févr. 16 12:02 file13 -rw-r--r-- 1 root root 0 févr. 16 12:02 file14 -rw-r--r-- 1 root root 0 févr. 16 12:02 file15 -rw-r--r-- 1 root root 0 févr. 16 12:02 file16 -rw-r--r-- 1 root root 0 févr. 16 12:02 file17 -rw-r--r-- 1 root root 0 févr. 16 12:02 file18 -rw-r--r-- 1 root root 0 févr. 16 12:02 file19 -rw-r--r-- 1 root root 0 févr. 16 12:02 file2 -rw-r--r-- 1 root root 0 févr. 16 12:02 file20 -rw-r--r-- 1 root root 0 févr. 16 12:02 file3 -rw-r--r-- 1 root root 0 févr. 16 12:02 file4 -rw-r--r-- 1 root root 0 févr. 16 12:02 file5 -rw-r--r-- 1 root root 0 févr. 16 12:02 file6 -rw-r--r-- 1 root root 0 févr. 16 12:02 file7 -rw-r--r-- 1 root root 0 févr. 16 12:02 file8 -rw-r--r-- 1 root root 0 févr. 16 12:02 file9
Important - Notez que dans ce cas, le caractère / est manquant après repA dans la commande rsync -a /test/repA /test/repB. Le résultat est la synchronisation du répertoire /test/repA vers /test/repB.
Pour éviter des erreurs, la commande rsync vous permet de visualiser le résultat de votre commande sans exécuter la commande grâce à l'utilisation des options -n et -r.
De nouveau, supprimez les fichiers dans le répertoire /test/repB :
root@debian9:/# rm -rf /test/repB/* root@debian9:/# ls -l /test/repB total 0
Exécutez la commande ci-dessous :
root@debian9:/# rsync -anv /test/repA/ /test/repB sending incremental file list ./ file1 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file2 file20 file3 file4 file5 file6 file7 file8 file9 sent 379 bytes received 79 bytes 916.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN)
Important - Notez que dans ce cas, Le résultat de la synchronisation est d'envoyer le contenu du répertoire /test/repA vers /test/repB.
Maintenant, exécutez la commande ci-dessous :
root@debian9:/# rsync -anv /test/repA /test/repB sending incremental file list repA/ repA/file1 repA/file10 repA/file11 repA/file12 repA/file13 repA/file14 repA/file15 repA/file16 repA/file17 repA/file18 repA/file19 repA/file2 repA/file20 repA/file3 repA/file4 repA/file5 repA/file6 repA/file7 repA/file8 repA/file9 sent 392 bytes received 80 bytes 944.00 bytes/sec total size is 0 speedup is 0.00 (DRY RUN)
Important - Notez que dans ce cas, Le résultat de la synchronisation est d'envoyer le répertoire /test/repA vers /test/repB.
Synchroniser par SSH
Rsync a besoin d'une configuration par clef asymétrique avec la machine CentOS_7 afin de fonctionner correctement. Dans cette configuration :
- La machine Debian_9 envoie à la machine CentOS_7 une requête d'authentification par clé asymétrique qui contient le module de la clé à utiliser,
- La machine CentOS_7 recherche une correspondance pour ce module dans le fichier des clés autorisés ~/.ssh/authorized_keys,
- Dans le cas où une correspondance n'est pas trouvée, la machine CentOS_7 met fin à la communication,
- Dans le cas contraire la machine CentOS_7 génère une chaîne aléatoire de 256 bits appelée un challenge et la chiffre avec la clé publique de la machine Debian_9,
- La machine Debian_9 reçoit le challenge et le décrypte avec la partie privée de sa clé. Il combine le challenge avec l'identifiant de session et chiffre le résultat. Ensuite il envoie le résultat chiffré à la machine CentOS_7.
- La machine CentOS_7 génère le même haché et le compare avec celui reçu de la machine Debian_9. Si les deux hachés sont identiques, l'authentification est réussie.
La configuration du serveur ssh s'effectue dans le fichier /etc/ssh/sshd_config de la machine CentOS_7 :
[trainee@centos7 ~]$ su - Mot de passe : Dernière connexion : lundi 14 janvier 2019 à 09:30:54 CET sur tty1 [root@centos7 ~]# cat /etc/ssh/sshd_config # $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $ # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/local/bin:/usr/bin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH SyslogFacility AUTHPRIV #LogLevel INFO # Authentication: #LoginGraceTime 2m #PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication yes # Change to no to disable s/key passwords #ChallengeResponseAuthentication yes ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no #KerberosUseKuserok yes # GSSAPI options GSSAPIAuthentication yes GSSAPICleanupCredentials no #GSSAPIStrictAcceptorCheck yes #GSSAPIKeyExchange no #GSSAPIEnablek5users no # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several # problems. UsePAM yes #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no X11Forwarding yes #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #UsePrivilegeSeparation sandbox #PermitUserEnvironment no #Compression delayed #ClientAliveInterval 0 #ClientAliveCountMax 3 #ShowPatchLevel no #UseDNS yes #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS # override default of no subsystems Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server
Important : Notez que le mot de passe fenestros ne sera pas en clair.
Pour ôter les lignes de commentaires dans ce fichier, utilisez la commande suivante :
[root@centos7 ~]# cd /tmp ; grep -E -v '^(#|$)' /etc/ssh/sshd_config > sshd_config [root@centos7 tmp]# cat sshd_config HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key SyslogFacility AUTHPRIV AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials no UsePAM yes X11Forwarding yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server
Pour sécuriser le serveur ssh, ce fichier doit être modifié :
[root@centos7 tmp]# vi sshd_config [root@centos7 tmp]# cat sshd_config Banner /etc/issue.net PermitRootLogin yes X11Forwarding no Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key UsePrivilegeSeparation yes SyslogFacility AUTH LogLevel INFO LoginGraceTime 120 StrictModes yes PubkeyAuthentication yes IgnoreRhosts yes HostbasedAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server UsePAM yes
Renommez le fichier /etc/ssh/sshd_config en /etc/ssh/sshd_config.old :
[root@centos7 tmp]# mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old
Copiez le fichier /tmp/sshd_config vers /etc/sshd/ :
[root@centos7 tmp]# cp /tmp/sshd_config /etc/ssh/
Redémarrez ensuite le service sshd :
[root@centos7 tmp]# systemctl restart sshd [root@centos7 tmp]# systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-02-18 11:07:46 CET; 3s ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 11282 (sshd) CGroup: /system.slice/sshd.service └─11282 /usr/sbin/sshd -D Feb 18 11:07:46 centos7.i2tch.loc systemd[1]: Stopped OpenSSH server daemon. Feb 18 11:07:46 centos7.i2tch.loc systemd[1]: Starting OpenSSH server daemon... Feb 18 11:07:46 centos7.i2tch.loc sshd[11282]: Server listening on 0.0.0.0 port 22. Feb 18 11:07:46 centos7.i2tch.loc sshd[11282]: Server listening on :: port 22. Feb 18 11:07:46 centos7.i2tch.loc systemd[1]: Started OpenSSH server daemon.
Saisissez maintenant les commandes suivantes en tant que trainee dans la machine Debian_9 :
Important - Lors de la génération des clefs, la passphrase doit être vide.
trainee@debian9:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/trainee/.ssh/id_rsa): Created directory '/home/trainee/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/trainee/.ssh/id_rsa. Your public key has been saved in /home/trainee/.ssh/id_rsa.pub. The key fingerprint is: SHA256:FlTf5QtW3geWEag+uCR8kkeCejftN3R9Q3xBEMuZFCI trainee@debian9 The key's randomart image is: +---[RSA 2048]----+ | .E.. *X*.| | . ..=oB=.| | . . ..Bo.=| | . . ... . .o+| | . . =So ....| | . . B.* + . ...| | . . O o o ..| | o o | | . . | +----[SHA256]-----+ trainee@debian9:~$ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/home/trainee/.ssh/id_ecdsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/trainee/.ssh/id_ecdsa. Your public key has been saved in /home/trainee/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:uancu/tKEP09dUQ83zRaH8gfqrfavatD5UycBjAXUVI trainee@debian9 The key's randomart image is: +---[ECDSA 256]---+ | oo=*Eo| | . o+.Bo| | . . O.@| | . o . + O+| | . S . + * | | . o . + o | | + o . | | . + .o. | | o **...oo+o| +----[SHA256]-----+ trainee@debian9:~$ ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/home/trainee/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/trainee/.ssh/id_ed25519. Your public key has been saved in /home/trainee/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:O/+l+gD5mMGKGcqSivdGxuiONkLXPChiU89t632gIq8 trainee@debian9 The key's randomart image is: +--[ED25519 256]--+ | | | | | | | . . . | | .oB . S | |.B.++X + O | |*.*oo + B + . | |+=o... o.o o o | |*ooE=.o. .+++ | +----[SHA256]-----+
Important - Les clés générées seront placées dans le répertoire ~/.ssh/.
Créez ensuite le fichier ~/.ssh/authorized_keys :
trainee@debian9:~$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys trainee@debian9:~$ cat .ssh/id_ecdsa.pub >> .ssh/authorized_keys trainee@debian9:~$ cat .ssh/id_ed25519.pub >> .ssh/authorized_keys trainee@debian9:~$ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjaTYj766fcplXV8y78FgAFmCShUZF12yblQXg7nYPSU+ymMGuB5n3WOeiqPBZ3ro9HItln/mLRHk9ubazFMhsa34gkhf9iZDy0o8vH9fdxU3HxVZkSnxhzSmM4Tzz6Szeg16BnuAzgGwfPcAOuwqm7+6JUIyIJwtywXPCiPaxMmwWpe7cfJguml+k6s8lE2JGRlGVrJRScfetBA8L0kQDcOJbF75xNvAXI3ssLbViNKfd50y+ZRtDYXS047sDH5h9jOn54aZDtBD3DOQXfiqCl5Db3UzHyYxGeW+Ux4GWSXMA3E9ZIVRqWzfXzFnIRVEcC/CpvnauOwXjr8S8KsPR trainee@debian9 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOku5nHPrKnvDi7w26pxyoNiKmFa6auc/fnSBBSLrlRqDywpyLf6V+e78AlBJKsziT1u6UFCJtAT8CZ78t7DfBA= trainee@debian9 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB5s+3tdvqWCttG//YMDyldQOoUXZyYqqt96R4u8pSh1 trainee@debian9
Il convient maintenant de se connecter sur la machine CentOS_7 en utilisant ssh et de vérifier la présence du répertoire ~/.ssh :
En saisissant cette commande, vous obtiendrez une fenêtre similaire à celle-ci :
root@debian9:~# ssh -l trainee centos7.i2tch.loc The authenticity of host 'centos7.i2tch.loc (10.0.2.16)' can't be established. ECDSA key fingerprint is SHA256:RgOsp/XI7JHNq+oIfHKw+jkHdtTnBIh+Dd7kVmHRxtU. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'centos7.i2tch.loc,10.0.2.16' (ECDSA) to the list of known hosts. \S Kernel \r on an \m trainee@centos7.i2tch.loc's password: trainee Last login: Mon Feb 18 10:54:18 2019 from 10.0.2.2 [trainee@centos7 ~]$ ls -la | grep ssh [trainee@centos7 ~]$ mkdir .ssh [trainee@centos7 ~]$ chmod 700 .ssh [trainee@centos7 ~]$ exit déconnexion Connection to centos7.i2tch.loc closed.
Important - Si le dossier distant .ssh n'existe pas dans le répertoire personnel de l'utilisateur connecté, il faut le créer avec des permissions de 700. Attention, le fichier authorized_keys doit posséder les permissions 644.
Important : Notez que le mot de passe trainee ne sera pas en clair.
Ensuite, il convient de transférer le fichier .ssh/authorized_keys de la machine Debian_9 vers la machine CentOS_7 :
trainee@debian9:~$ scp .ssh/authorized_keys trainee@centos7.i2tch.loc:/home/trainee/.ssh/authorized_keys The authenticity of host 'centos7.i2tch.loc (10.0.2.16)' can't be established. ECDSA key fingerprint is SHA256:RgOsp/XI7JHNq+oIfHKw+jkHdtTnBIh+Dd7kVmHRxtU. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'centos7.i2tch.loc,10.0.2.16' (ECDSA) to the list of known hosts. \S Kernel \r on an \m trainee@centos7.i2tch.loc's password: authorized_keys 100% 671 720.1KB/s 00:00 100% 701 994.8KB/s 00:00
Important : Notez que le mot de passe trainee ne sera pas en clair.
Connectez-vous via ssh de la machine Debian_9 à la machine CentOS_7 :
trainee@debian9:~$ ssh -l trainee centos7.i2tch.loc \S Kernel \r on an \m Last login: Mon Feb 18 12:35:27 2019 from 10.0.2.9 [trainee@centos7 ~]$ exit déconnexion Connection to centos7.i2tch.loc closed.
Important : Notez que l'authentification a utilisé le couple de clefs asymétrique et aucun mot de passe n'a été requis.
Créez maintenant 100 fichiers dans le répertoire /home/trainee/debian9 :
trainee@debian9:~$ mkdir debian9 trainee@debian9:~$ touch debian9/file{1..100} trainee@debian9:~$ ls -l debian9/ | more total 4 -rw-r--r-- 1 trainee trainee 6 févr. 18 12:49 file1 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file10 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file100 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file11 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file12 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file13 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file14 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file15 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file16 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file17 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file18 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file19 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file2 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file20 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file21 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file22 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file23 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file24 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file25 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file26 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file27 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file28 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file29 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file3 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file30 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file31 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file32 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file33 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file34 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file35 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file36 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file37 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file38 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file39 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file4 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file40 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file41 -rw-r--r-- 1 trainee trainee 0 févr. 18 12:49 file42 --Plus--
Important : Notez l'heure de chaque fichier - 12:49.
Envoyez le répertoire ~/debian9 vers la machine virtuelle CentOS_7 :
trainee@debian9:~$ rsync -a ~/debian9 trainee@centos7.i2tch.loc:~/debian9 \S Kernel \r on an \m trainee@debian9:~$ ssh -l trainee centos7.i2tch.loc \S Kernel \r on an \m Last login: Mon Feb 18 12:44:06 2019 from 10.0.2.9 [trainee@centos7 ~]$ ls debian9 Desktop Documents Downloads Music Pictures Public Templates Videos [trainee@centos7 ~]$ ls debian9/ debian9 [trainee@centos7 ~]$ ls debian9/debian9 file1 file13 file18 file22 file27 file31 file36 file40 file45 file5 file54 file59 file63 file68 file72 file77 file81 file86 file90 file95 file10 file14 file19 file23 file28 file32 file37 file41 file46 file50 file55 file6 file64 file69 file73 file78 file82 file87 file91 file96 file100 file15 file2 file24 file29 file33 file38 file42 file47 file51 file56 file60 file65 file7 file74 file79 file83 file88 file92 file97 file11 file16 file20 file25 file3 file34 file39 file43 file48 file52 file57 file61 file66 file70 file75 file8 file84 file89 file93 file98 file12 file17 file21 file26 file30 file35 file4 file44 file49 file53 file58 file62 file67 file71 file76 file80 file85 file9 file94 file99 [trainee@centos7 ~]$ exit déconnexion Connection to centos7.i2tch.loc closed.
Modifiez le fichier /home/debian/file1 dans la machine virtuelle Debian_9 :
trainee@debian9:~$ echo "i2tch" > ~/debian9/file1
Envoyez de nouveau le répertoire ~/debian9 vers la machine virtuelle CentOS_7 :
trainee@debian9:~$ rsync -a --progress ~/debian9 trainee@centos7.i2tch.loc:~/debian9 \S Kernel \r on an \m sending incremental file list trainee@debian9:~$ ssh -l trainee centos7.i2tch.loc \S Kernel \r on an \m Last login: Mon Feb 18 13:09:55 2019 from 10.0.2.9 [trainee@centos7 ~]$ cd debian9/debian9/ [trainee@centos7 debian9]$ ls -l | more total 4 -rw-r--r--. 1 trainee trainee 6 18 févr. 13:13 file1 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file10 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file100 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file11 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file12 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file13 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file14 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file15 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file16 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file17 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file18 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file19 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file2 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file20 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file21 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file22 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file23 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file24 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file25 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file26 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file27 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file28 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file29 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file3 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file30 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file31 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file32 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file33 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file34 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file35 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file36 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file37 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file38 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file39 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file4 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file40 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file41 -rw-r--r--. 1 trainee trainee 0 18 févr. 12:49 file42 [trainee@centos7 debian9]$ exit déconnexion Connection to centos7.i2tch.loc closed.
Important : Notez l'heure du fichier - file1.
Supprimez maintenant le fichier ~/debian9/file2 dans la machine virtuelle Debian_9:
trainee@debian9:~$ rm -rf ~/debian9/file2
Envoyez encore une fois le répertoire ~/debian9 vers la machine virtuelle CentOS_7 :
trainee@debian9:~$ rsync -a --progress ~/debian9 trainee@centos7.i2tch.loc:~/debian9 \S Kernel \r on an \m sending incremental file list debian9/
Vérifiez le résultat dans la machine virtuelle CentOS_7 :
trainee@debian9:~$ ssh -l trainee centos7.i2tch.loc \S Kernel \r on an \m Last login: Mon Feb 18 13:13:48 2019 from 10.0.2.9 [trainee@centos7 ~]$ ls ~/debian9/debian9/ file1 file13 file18 file22 file27 file31 file36 file40 file45 file5 file54 file59 file63 file68 file72 file77 file81 file86 file90 file95 file10 file14 file19 file23 file28 file32 file37 file41 file46 file50 file55 file6 file64 file69 file73 file78 file82 file87 file91 file96 file100 file15 file2 file24 file29 file33 file38 file42 file47 file51 file56 file60 file65 file7 file74 file79 file83 file88 file92 file97 file11 file16 file20 file25 file3 file34 file39 file43 file48 file52 file57 file61 file66 file70 file75 file8 file84 file89 file93 file98 file12 file17 file21 file26 file30 file35 file4 file44 file49 file53 file58 file62 file67 file71 file76 file80 file85 file9 file94 file99 [trainee@centos7 ~]$ exit déconnexion Connection to centos7.i2tch.loc closed.
Important : Notez que le fichier file2 n'a pas été supprimé.
Envoyez encore une fois le répertoire ~/debian9 vers la machine virtuelle CentOS_7 en utilisant l'option –delete :
trainee@debian9:~$ rsync -a --delete --progress ~/debian9 trainee@centos7.i2tch.loc:~/debian9 \S Kernel \r on an \m sending incremental file list deleting debian9/file2 trainee@debian9:~$ ssh -l trainee centos7.i2tch.loc \S Kernel \r on an \m Last login: Mon Feb 18 13:26:21 2019 from 10.0.2.9 [trainee@centos7 ~]$ ls ~/debian9/debian9/ file1 file13 file18 file23 file28 file32 file37 file41 file46 file50 file55 file6 file64 file69 file73 file78 file82 file87 file91 file96 file10 file14 file19 file24 file29 file33 file38 file42 file47 file51 file56 file60 file65 file7 file74 file79 file83 file88 file92 file97 file100 file15 file20 file25 file3 file34 file39 file43 file48 file52 file57 file61 file66 file70 file75 file8 file84 file89 file93 file98 file11 file16 file21 file26 file30 file35 file4 file44 file49 file53 file58 file62 file67 file71 file76 file80 file85 file9 file94 file99 file12 file17 file22 file27 file31 file36 file40 file45 file5 file54 file59 file63 file68 file72 file77 file81 file86 file90 file95 [trainee@centos7 ~]$ exit déconnexion Connection to centos7.i2tch.loc closed.
Important : Notez que le fichier file2 a été supprimé.
Options de la Commande
Les options de la commande rsync sont :
trainee@debian9:~$ rsync --help rsync version 3.1.2 protocol version 31 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, ACLs, xattrs, iconv, symtimes, prealloc rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details. rsync is a file transfer program capable of efficient remote update via a fast differencing algorithm. Usage: rsync [OPTION]... SRC [SRC]... DEST or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST or rsync [OPTION]... [USER@]HOST:SRC [DEST] or rsync [OPTION]... [USER@]HOST::SRC [DEST] or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect to an rsync daemon, and require SRC or DEST to start with a module name. Options -v, --verbose increase verbosity --info=FLAGS fine-grained informational verbosity --debug=FLAGS fine-grained debug verbosity --msgs2stderr special output handling for debugging -q, --quiet suppress non-error messages --no-motd suppress daemon-mode MOTD (see manpage caveat) -c, --checksum skip based on checksum, not mod-time & size -a, --archive archive mode; equals -rlptgoD (no -H,-A,-X) --no-OPTION turn off an implied OPTION (e.g. --no-D) -r, --recursive recurse into directories -R, --relative use relative path names --no-implied-dirs don't send implied dirs with --relative -b, --backup make backups (see --suffix & --backup-dir) --backup-dir=DIR make backups into hierarchy based in DIR --suffix=SUFFIX set backup suffix (default ~ w/o --backup-dir) -u, --update skip files that are newer on the receiver --inplace update destination files in-place (SEE MAN PAGE) --append append data onto shorter files --append-verify like --append, but with old data in file checksum -d, --dirs transfer directories without recursing -l, --links copy symlinks as symlinks -L, --copy-links transform symlink into referent file/dir --copy-unsafe-links only "unsafe" symlinks are transformed --safe-links ignore symlinks that point outside the source tree --munge-links munge symlinks to make them safer (but unusable) -k, --copy-dirlinks transform symlink to a dir into referent dir -K, --keep-dirlinks treat symlinked dir on receiver as dir -H, --hard-links preserve hard links -p, --perms preserve permissions -E, --executability preserve the file's executability --chmod=CHMOD affect file and/or directory permissions -A, --acls preserve ACLs (implies --perms) -X, --xattrs preserve extended attributes -o, --owner preserve owner (super-user only) -g, --group preserve group --devices preserve device files (super-user only) --copy-devices copy device contents as regular file --specials preserve special files -D same as --devices --specials -t, --times preserve modification times -O, --omit-dir-times omit directories from --times -J, --omit-link-times omit symlinks from --times --super receiver attempts super-user activities --fake-super store/recover privileged attrs using xattrs -S, --sparse handle sparse files efficiently --preallocate allocate dest files before writing them -n, --dry-run perform a trial run with no changes made -W, --whole-file copy files whole (without delta-xfer algorithm) -x, --one-file-system don't cross filesystem boundaries -B, --block-size=SIZE force a fixed checksum block-size -e, --rsh=COMMAND specify the remote shell to use --rsync-path=PROGRAM specify the rsync to run on the remote machine --existing skip creating new files on receiver --ignore-existing skip updating files that already exist on receiver --remove-source-files sender removes synchronized files (non-dirs) --del an alias for --delete-during --delete delete extraneous files from destination dirs --delete-before receiver deletes before transfer, not during --delete-during receiver deletes during the transfer --delete-delay find deletions during, delete after --delete-after receiver deletes after transfer, not during --delete-excluded also delete excluded files from destination dirs --ignore-missing-args ignore missing source args without error --delete-missing-args delete missing source args from destination --ignore-errors delete even if there are I/O errors --force force deletion of directories even if not empty --max-delete=NUM don't delete more than NUM files --max-size=SIZE don't transfer any file larger than SIZE --min-size=SIZE don't transfer any file smaller than SIZE --partial keep partially transferred files --partial-dir=DIR put a partially transferred file into DIR --delay-updates put all updated files into place at transfer's end -m, --prune-empty-dirs prune empty directory chains from the file-list --numeric-ids don't map uid/gid values by user/group name --usermap=STRING custom username mapping --groupmap=STRING custom groupname mapping --chown=USER:GROUP simple username/groupname mapping --timeout=SECONDS set I/O timeout in seconds --contimeout=SECONDS set daemon connection timeout in seconds -I, --ignore-times don't skip files that match in size and mod-time -M, --remote-option=OPTION send OPTION to the remote side only --size-only skip files that match in size --modify-window=NUM compare mod-times with reduced accuracy -T, --temp-dir=DIR create temporary files in directory DIR -y, --fuzzy find similar file for basis if no dest file --compare-dest=DIR also compare destination files relative to DIR --copy-dest=DIR ... and include copies of unchanged files --link-dest=DIR hardlink to files in DIR when unchanged -z, --compress compress file data during the transfer --compress-level=NUM explicitly set compression level --skip-compress=LIST skip compressing files with a suffix in LIST -C, --cvs-exclude auto-ignore files the same way CVS does -f, --filter=RULE add a file-filtering RULE -F same as --filter='dir-merge /.rsync-filter' repeated: --filter='- .rsync-filter' --exclude=PATTERN exclude files matching PATTERN --exclude-from=FILE read exclude patterns from FILE --include=PATTERN don't exclude files matching PATTERN --include-from=FILE read include patterns from FILE --files-from=FILE read list of source-file names from FILE -0, --from0 all *-from/filter files are delimited by 0s -s, --protect-args no space-splitting; only wildcard special-chars --address=ADDRESS bind address for outgoing socket to daemon --port=PORT specify double-colon alternate port number --sockopts=OPTIONS specify custom TCP options --blocking-io use blocking I/O for the remote shell --stats give some file-transfer stats -8, --8-bit-output leave high-bit chars unescaped in output -h, --human-readable output numbers in a human-readable format --progress show progress during transfer -P same as --partial --progress -i, --itemize-changes output a change-summary for all updates --out-format=FORMAT output updates using the specified FORMAT --log-file=FILE log what we're doing to the specified FILE --log-file-format=FMT log updates using the specified FMT --password-file=FILE read daemon-access password from FILE --list-only list the files instead of copying them --bwlimit=RATE limit socket I/O bandwidth --stop-at=y-m-dTh:m Stop rsync at year-month-dayThour:minute --time-limit=MINS Stop rsync after MINS minutes have elapsed --outbuf=N|L|B set output buffering to None, Line, or Block --write-batch=FILE write a batched update to FILE --only-write-batch=FILE like --write-batch but w/o updating destination --read-batch=FILE read a batched update from FILE --protocol=NUM force an older protocol version to be used --iconv=CONVERT_SPEC request charset conversion of filenames --checksum-seed=NUM set block/file checksum seed (advanced) --noatime do not alter atime when opening source files -4, --ipv4 prefer IPv4 -6, --ipv6 prefer IPv6 --version print version number (-h) --help show this help (-h is --help only if used alone) Use "rsync --daemon --help" to see the daemon-mode command-line options. Please see the rsync(1) and rsyncd.conf(5) man pages for full documentation. See http://rsync.samba.org/ for updates, bug reports, and answers
LAB #5 - Backup-PC
Présentation
Cet utilitaire :
- se base sur une interface graphique à base de scripts CGI,
- ne nécessite pas de base de données ni de PHP.
Le serveur se réveille toutes les heures pour surveiller les postes clients spécifiés dans le fichier /etc/backuppc/hosts. Si le client surveillé est en phase de blackout (éteinte), le serveur passe au client suivant, sinon il examine la date de la dernière sauvegarde complète. Lorsque la date de dernière sauvegarde dépasse les 30 jours le serveur opère une nouvelle sauvegarde complète.
Important - Notez qu'il est possible d'utiliser l'utilitaire etherwake afin de réveiller une machine pour effectuer une sauvegarde.
Dans le cas contraire, le serveur examine la date de la dernière sauvegarde incrémentale. Lorsque la date de dernière sauvegarde incrémentale date de plus de 1 jour, le serveur opère une nouvelle sauvegarde incrémentale.
Important - Le serveur ne garde que 19 sauvegardes incrémentales à un instant t.
Installation du serveur
Installez Apache et Backup-PC :
root@debian9:~# apt-get install apache2 apache2-doc backuppc
Lors de l'installation, un mot de passe de type At0tJdU est créé pour l'utilisateur backuppc. Afin de modifier ce mot de passe, saisissez la commande suivante :
root@debian9:~# htpasswd /etc/backuppc/htpasswd backuppc New password: fenestros Re-type new password: fenestros Updating password for user backuppc
Important : Notez que le mot de passe fenestros ne sera pas en clair.
Créez maintenant des paires de clefs sous l'identité de l'utilisateur backuppc :
root@debian9:~# su - backuppc $ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/var/lib/backuppc/.ssh/id_rsa): Created directory '/var/lib/backuppc/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: 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: SHA256:iCdVMVIUTDX9+/TjKoJZfRhqEV3JD/vFi6zjXc2XvIM backuppc@debian9 The key's randomart image is: +---[RSA 2048]----+ | .=O++.o.. | | o.o o.+ | | . . .+. | | o . . . ...o| | o o S + + o.o| | o + o +o++| | = o .*=| | o . +.E.o=| | o.ooooo| +----[SHA256]-----+ $ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/var/lib/backuppc/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/backuppc/.ssh/id_dsa. Your public key has been saved in /var/lib/backuppc/.ssh/id_dsa.pub. The key fingerprint is: SHA256:PKuHZblMtW5CYeQ09wTNXvlvJPcHmknzMHaQZWHlzRo backuppc@debian9 The key's randomart image is: +---[DSA 1024]----+ | .+ o=+.| | + . *ooo.| | + o + oE.+| | .+ . O +o+| | .S+ + X.=o| | *o. + . =| | B.o ..| | ..= o | | .. o | +----[SHA256]-----+ $ ssh-keygen -t ecdsa Generating public/private ecdsa key pair. Enter file in which to save the key (/var/lib/backuppc/.ssh/id_ecdsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/backuppc/.ssh/id_ecdsa. Your public key has been saved in /var/lib/backuppc/.ssh/id_ecdsa.pub. The key fingerprint is: SHA256:CCAYjAxsSF+xhRbxNwmqtWpcAMBVwmbEox+x/Nq4mns backuppc@debian9 The key's randomart image is: +---[ECDSA 256]---+ |^+*+.*=o | |+BoOoo= . . | |. =o*+ . + | | . ++.... . | | ..oo. S | | ..o. | | ++ | | oE . | | ++.. | +----[SHA256]-----+ $ ssh-keygen -t ed25519 Generating public/private ed25519 key pair. Enter file in which to save the key (/var/lib/backuppc/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/backuppc/.ssh/id_ed25519. Your public key has been saved in /var/lib/backuppc/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:Tfnx5uB0JS5HeFy8cHNRP39PsugOk8vckYogcN7o8Zc backuppc@debian9 The key's randomart image is: +--[ED25519 256]--+ | o=| | . + ++| | o o B.*| | o . * +o| | . . S . = B +| | + o + X +o| | = o .+ = o .| | . + .E+ B . | | . ... =.+ | +----[SHA256]-----+
Assemblez les clefs publiques dans un fichier authorized_keys :
$ cat .ssh/id_dsa.pub > authorized_keys $ cat .ssh/id_ecdsa.pub >> authorized_keys $ cat .ssh/id_ed25519.pub >> authorized_keys $ cat .ssh/id_rsa.pub >> authorized_keys $ cat authorized_keys ssh-dss AAAAB3NzaC1kc3MAAACBAJCk66i1KAqkv5Idumv0/T2J4opXVWbs+0QAlzOJHHPQynaTwxpFQneCQnTNMBEvkXLuw3iu3bx42vyHo7K2lRbp/aivbGDJbRagYDQZYPKjGFSVKfugzAGMsnnl/fpaZruJprFpiZcecKUcC03i/qSvQpe5GuevjSHumthf37VHAAAAFQDbcCLFn6YmsjkZU0l1xSzV9FVsHQAAAIATz9o01NiqMNJemYKj9Lxf+k08mXpggO7nNraJ8vjkr5dHLOBzMpUEW8kBv1P+A1/y2OBgutZnjoKAW295I47z0y+EpILJPwBcG6xPBDKsa6dOBzXPio84aSyD2zp8IcUOtjAjc8AHBZX76FW0nNCZzMinx1LAFdEwNwNBg1x57QAAAIBPnWaf1nnLQ4yl2mr4Ig6OnVAljcr9fo0AF8TTkQOWXgQ3O2adBGMB74KUdlZhAhUX3HbvmJHDMYgTqwJA71MrJFpW6Pr3uVbRkh2Fv9TqnBpF6ilG2kkbI08qF0N87DkyqTVEWdyXJoHhKPZ0FJB4lDWElxphH4R42X/cuBk9nQ== backuppc@debian9 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFMnCZC0ZOkw5TTv9JC6xx42T45qtZ1Vme3nkClz80KqJ6tqz/xvQ8LEE6XZE6/sF18l51Dey253bmytL3KN1d0= backuppc@debian9 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJifkDkYf35YCcNfwI3GxNxD+7gxd5qjYVFoI1OHaGEe backuppc@debian9 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCj5XVKxV/4gH2eTIIpntQzzJSyyYvLsSn8J3wGhSVubKiaKfZ/miZUUB4l6Ww69EluAGpP8CjXz9fEiJHx1/NSo4lHSnug3l3N2FhdgiHmRB9wWVtPhkTU4lVRS9Y3nCjX2LAOu7s2fdDmK85aotQj2f7ArPQD+inWh2h4E2tvouzI4dLALX19WE+PPbKYhrpxQkexGL5OCw/v1IX4smRc+DiOWbdKuUZsCOUMtk7xKiRO1mwOQ4Bg/7r2RuAHRSbvt8cffdGUgAt2CzwjzXvvOzaHP1Xz58a/sPubScispzR7wZ6c3b78ytwUL/OKfEuRybedFrAgCg8lg2I2tkAN backuppc@debian9
En tant que l'utilisateur root, copiez le fichier authorized_keys vers le répertoire /var/www/html :
$ exit root@debian9:~# cp /var/lib/backuppc/authorized_keys /var/www/html
Copiez les clefs vers /root/.ssh/ :
root@debian9:~# cp /var/lib/backuppc/.ssh/id_* /root/.ssh root@debian9:~# ls -la .ssh total 44 drwx------ 2 root root 4096 févr. 28 15:15 . drwx------ 7 root root 4096 févr. 28 10:51 .. -rw------- 1 root root 668 févr. 28 15:15 id_dsa -rw-r--r-- 1 root root 606 févr. 28 15:15 id_dsa.pub -rw------- 1 root root 227 févr. 28 15:15 id_ecdsa -rw-r--r-- 1 root root 178 févr. 28 15:15 id_ecdsa.pub -rw------- 1 root root 411 févr. 28 15:15 id_ed25519 -rw-r--r-- 1 root root 98 févr. 28 15:15 id_ed25519.pub -rw------- 1 root root 1675 févr. 28 15:15 id_rsa -rw-r--r-- 1 root root 398 févr. 28 15:15 id_rsa.pub -rw-r--r-- 1 root root 444 févr. 18 12:35 known_hosts
Redémarrez le serveur Apache2 :
root@debian9:~# systemctl restart apache2 root@debian9:~# systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: Active: active (running) since Thu 2019-02-28 15:17:56 CET; 10s ago Process: 20004 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCES Process: 20010 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCC Main PID: 20015 (apache2) Tasks: 56 (limit: 4915) CGroup: /system.slice/apache2.service ├─20015 /usr/sbin/apache2 -k start ├─20016 /usr/sbin/apache2 -k start ├─20017 /usr/sbin/apache2 -k start └─20018 /usr/sbin/apache2 -k start févr. 28 15:17:56 debian9 systemd[1]: Stopped The Apache HTTP Server. févr. 28 15:17:56 debian9 systemd[1]: Starting The Apache HTTP Server... févr. 28 15:17:56 debian9 systemd[1]: Started The Apache HTTP Server. lines 1-16/16 (END)
Installation du client
Rappelez-vous que la machine virtuelle CentOS_7 a un serveur SSH fonctionnel en cours d'exécution :
[root@centos7 ~]# systemctl status sshd ● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-02-18 12:34:24 CET; 10h ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 1248 (sshd) CGroup: /system.slice/sshd.service ├─ 1248 /usr/sbin/sshd -D ├─17841 sshd: trainee [priv] ├─17913 sshd: trainee@pts/0 ├─17914 -bash ├─31276 sshd: trainee [priv] ├─31356 sshd: trainee@pts/1 └─31363 -bash Feb 18 13:30:57 centos7.i2tch.loc sshd[26681]: Received disconnect from 1... Feb 18 13:30:57 centos7.i2tch.loc sshd[26681]: Disconnected from 10.0.2.9... Feb 18 16:44:35 centos7.i2tch.loc sshd[17841]: Failed password for traine... Feb 18 16:44:38 centos7.i2tch.loc sshd[17841]: Accepted password for trai... Feb 18 16:44:46 centos7.i2tch.loc su[17982]: (to root) trainee on pts/0 Feb 18 23:00:51 centos7.i2tch.loc sshd[23496]: Accepted publickey for tra... Feb 18 23:01:03 centos7.i2tch.loc sshd[23503]: Received disconnect from 1... Feb 18 23:01:03 centos7.i2tch.loc sshd[23503]: Disconnected from 10.0.2.9... Feb 18 23:18:24 centos7.i2tch.loc sshd[31276]: Accepted password for trai... Feb 18 23:18:49 centos7.i2tch.loc su[31519]: (to root) trainee on pts/1 Hint: Some lines were ellipsized, use -l to show in full.
Récupérez maintenant la clef publique à partir de la machine virtuelle Debian_9 :
[root@centos7 ~]# wget http://debian9.i2tch.loc/authorized_keys --2019-02-18 23:22:52-- http://debian9.i2tch.loc/authorized_keys Resolving debian9.i2tch.loc (debian9.i2tch.loc)... 10.0.2.9 Connecting to debian9.i2tch.loc (debian9.i2tch.loc)|10.0.2.9|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1280 (1.2K) Saving to: ‘authorized_keys’ 100%[======================================>] 1,280 --.-K/s in 0s 2019-02-18 23:22:52 (90.3 MB/s) - ‘authorized_keys’ saved [1280/1280]
Déplacez le fichier authorized_keys vers /root/.ssh :
[root@centos7 ~]# mkdir .ssh [root@centos7 ~]# mv authorized_keys .ssh
Modifiez les permissions ainsi :
[root@centos7 ~]# chmod 700 .ssh [root@centos7 ~]# chmod 600 .ssh/authorized_keys
A partir de la VM Debian_9, testez la connexion ssh en tant que root :
root@debian9:~# ssh root@centos7.i2tch.loc \S Kernel \r on an \m Last login: Mon Feb 18 23:18:49 2019 [root@centos7 ~]# exit déconnexion Connection to centos7.i2tch.loc closed. root@debian9:~#
Utilisation
Dans l'interface graphique de la machine virtuelle Debian_9, lancez le navigateur Firefox ESR. Saisissez l'adresse http://debian_9.i2tch.loc/backuppc/index.cgi. Saisissez le nom d'utilisateur backuppc et le mot de passe fenestros. Vous obtiendrez une fenêtre similaire à celle-ci :
Validez la sauvegarde du mot de passe :
Cliquez sur Edit Config dans le menu de gauche. Vous obtiendrez une fenêtre similaire à celle-ci :
Cliquez sur le lien Xfer et choisissez la XferMethod rsync :
Cliquez sur le lien Hosts. Cliquez sur le bouton Add et ajoutez centos7.i2tch.loc :
Cliquez sur le lien Backup Settings et ajoutez centos7.i2tch.loc en ClientNameAlias :
Cliquez ensuite sur le bouton Save.
Cliquez sur le lien Schedule. Dans le menu déroulant à gauche Select a host …, sélectionnez l'entrée centos7.i2tch.loc. Vous obtiendrez une fenêtre similaire à celle-ci :
Lancez la sauvegarde en ligne de commande afin d'accepter la clef ECDSA :
$ /usr/share/backuppc/bin/BackupPC_dump -v -f centos7.i2tch.loc cmdSystemOrEval: about to system /bin/ping -c 1 centos7.i2tch.loc cmdSystemOrEval: finished: got output PING centos7.i2tch.loc (10.0.2.16) 56(84) bytes of data. 64 bytes from centos7.i2tch.loc (10.0.2.16): icmp_seq=1 ttl=64 time=0.260 ms --- centos7.i2tch.loc ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.260/0.260/0.260/0.000 ms cmdSystemOrEval: about to system /bin/ping -c 1 centos7.i2tch.loc cmdSystemOrEval: finished: got output PING centos7.i2tch.loc (10.0.2.16) 56(84) bytes of data. 64 bytes from centos7.i2tch.loc (10.0.2.16): icmp_seq=1 ttl=64 time=0.222 ms --- centos7.i2tch.loc ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.222/0.222/0.222/0.000 ms CheckHostAlive: returning 0.222 full backup started for directory / started full dump, share=/ Running: /usr/bin/ssh -q -x -l root centos7.i2tch.loc /usr/bin/rsync --server --sender --numeric-ids --perms --owner --group -D --links --hard-links --times --block-size=2048 --recursive --ignore-times . / Xfer PIDs are now 20732 xferPids 20732 The authenticity of host 'centos7.i2tch.loc (10.0.2.16)' can't be established. ECDSA key fingerprint is SHA256:RgOsp/XI7JHNq+oIfHKw+jkHdtTnBIh+Dd7kVmHRxtU. Are you sure you want to continue connecting (yes/no)? yes Got remote protocol 31 Negotiated protocol version 28 ... ^CfileListReceive() failed Done: 0 files, 0 bytes Got fatal error during xfer (fileListReceive failed) Backup aborted by user signal Not saving this as a partial backup since it has fewer files than the prior one (got 0 and 0 files versus 0) dump failed: fileListReceive failed
Retournez ensuite dans l'interface HTML pour lancer une sauvegarde de centos7.i2tch.loc en cliquant sur le bouton Start Full Backup :
Cliquez de nouveau sur le bouton Start Full Backup pour confirmer votre choix :
Retournez dans le terminal de connexion à la machine virtuelle Debian_9 et redevenez l'utilisateur root :
$ exit
Consultez le contenu du répertoire /var/lib/backuppc/pc/ :
root@debian9:~# ls /var/lib/backuppc/pc/ centos7.i2tch.loc localhost
Consultez le contenu du répertoire /var/lib/backuppc/pc/centos7.i2tch.loc/ :
root@debian9:~# ls /var/lib/backuppc/pc/centos7.i2tch.loc/ LOCK LOG.032019 new NewFileList XferLOG.bad.z XferLOG.z
Consultez le contenu du fichier LOG :
root@debian9:~# cat /var/lib/backuppc/pc/centos7.i2tch.loc/LOG.032019 2019-03-01 08:34:31 full backup started for directory / 2019-03-01 08:35:21 Aborting backup up after signal INT 2019-03-01 08:35:22 Got fatal error during xfer (fileListReceive failed) 2019-03-01 08:40:18 full backup started for directory /
Important - Notez le démarrage d'une sauvegarde complète de la machine virtuelle.
La sauvegarde est stockée dans le répertoire /var/lib/backuppc/pc/centos7.i2tch.loc/new/ :
root@debian9:~# ls /var/lib/backuppc/pc/centos7.i2tch.loc/new/ f%2f root@debian9:~# ls /var/lib/backuppc/pc/centos7.i2tch.loc/new/f%2f/ fbin fdevice.map flib64 fmnt fboot fetc fliste-des-paquets_centos7.i2tch.loc_2019-02-18-16-53 fmontages.list fcentos7.i2tch.loc.rpmdatabase.tar.gz fgrub.cfg fliste-des-paquets_centos7.i2tch.loc_2019-02-18-17-10 fopt fcentral_backup fhome flost+found fproc fdev flib fmedia root@debian9:~# ls /var/lib/backuppc/pc/centos7.i2tch.loc/new/f%2f/fboot/
Retournez dans l'interface HTML est cliquez sur le bouton Stop/Dequeue Backup :
Confirmez votre choix. Vous obtiendrez la fenêtre suivante :
Retournez à la page de centos7.i2tch.loc :
Cliquez sur le lien 0 dans la colonne Backup# :
Avant de poursuivre, supprimez les sauvegardes de backuppc :
root@debian9:~# rm -rf /var/lib/backuppc/pc/new/*
LAB #6 - Bacula
Bacula est un ensemble de programmes permettant de piloter les sauvegardes, les restaurations et les vérifications.
C'est une suite logicielle :
- capable de fonctionner sur un seul serveur,
- qui fonctionne en mode client/serveur,
- modulaire.
Cette suite se découpe en quatre parties :
- une ou plusieurs bases de données PostgreSQL, SQLite ou MySQL hebergeant le catalogue contenant, entre autre, les tâches, les chemins vers les données et les évènements,
- un ou plusieurs directeurs pilotant l'ensemble des stratégies de sauvegarde et listant les clients,
- un ou plusieurs services de stockage gérant un ensemble de volumes virtuels ou physiques,
- les clients à sauvegarder.
Installation du serveur
A Faire : Supprimez la machine virtuelle Debian_9. Importez une nouvelle machine virtuelle Debian_9. Ajoutez un disque de type VDI, grand de 20Go et dénommé backup au contrôleur SATA. Mettez l'interface 1 dans le réseau NAT NatNetwork. Démarrez la machine virtuelle.
Modifiez le fichier /etc/hosts dans la machine virtuelle Debian_9 :
trainee@debian9:~$ su - Mot de passe : fenestros root@debian9:~# vi /etc/hosts root@debian9:~# cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 debian9.i2tch.loc debian9 10.0.2.9 debian9.i2tch.loc 10.0.2.16 centos7.i2tch.loc # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Important : Notez que le mot de passe fenestros ne sera pas en clair.
Commencez par installer PostgreSQL :
root@debian9:~# apt-get install postgresql
Créez ensuite le rôle bacula dans postgresql :
root@debian9:~# su - postgres postgres@debian9:~$ createuser -sdrP bacula Saisir le mot de passe pour le nouveau rôle : Le saisir de nouveau : postgres@debian9:~$ exit déconnexion
Important : Notez que le mot de passe fenestros ne sera pas en clair.
Installez maintenant bacula :
root@debian9:~# apt-get install bacula-server bacula-director-pgsql bacula-console bacula-common-pgsql bacula-client
Important - Lors de l'installation de bacula, il convient de répondre oui à la question concernant la création de la base de données PostgreSQL et ensuite d'indiquer l'hôte localhost et le mot de passe fenestros.
Creéz une seule partition sur /dev/sdb :
root@debian9:~# fdisk /dev/sdb Bienvenue dans fdisk (util-linux 2.29.2). Les modifications resteront en mémoire jusqu'à écriture. Soyez prudent avant d'utiliser la commande d'écriture. Commande (m pour l'aide) : n Type de partition p primaire (0 primaire, 0 étendue, 4 libre) e étendue (conteneur pour partitions logiques) Sélectionnez (p par défaut) : p Numéro de partition (1-4, 1 par défaut) : 1 Premier secteur (2048-41943039, 2048 par défaut) : Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-41943039, 41943039 par défaut) : Une nouvelle partition 1 de type « Linux » et de taille 20 GiB a été créée. Commande (m pour l'aide) : w La table de partitions a été altérée. Appel d'ioctl() pour relire la table de partitions. Synchronisation des disques.
Créez un système de fichiers ext4 sur /dev/sdb1 :
root@debian9:~# mkfs.ext4 /dev/sdb1 mke2fs 1.43.4 (31-Jan-2017) En train de créer un système de fichiers avec 5242624 4k blocs et 1310720 i-noeuds. UUID de système de fichiers=a44860e8-a413-4705-9a50-a71a5f1e66f6 Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocation des tables de groupe : complété Écriture des tables d'i-noeuds : complété Création du journal (32768 blocs) : complété Écriture des superblocs et de l'information de comptabilité du système de fichiers : complété
Obtenez l'UUID du système de fichiers ainsi créé :
root@debian9:~# dumpe2fs /dev/sdb1 | grep UUID dumpe2fs 1.43.4 (31-Jan-2017) Filesystem UUID: a44860e8-a413-4705-9a50-a71a5f1e66f6
Modifiez le fichier /etc/fstab :
root@debian9:~# vi /etc/fstab root@debian9:~# cat /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=b29b93ed-8de4-4980-a407-15bba3ad09ba / ext4 errors=remount-ro 0 1 # swap was on /dev/sda5 during installation UUID=479bcf18-634c-42af-bb34-d9b7c97230d1 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 UUID=ed81abb5-dfb1-4fad-a011-1e0faaf37e5c /backup ext4 defaults 0 0
Montez le système de fichiers sur /backup :
root@debian9:~# mkdir /backup root@debian9:~# mount -a root@debian9:~# mount | grep sdb1 /dev/sdb1 on /backup type ext4 (rw,relatime,data=ordered)
Créez les répertoires /backup/Volumes et /backup/Restore :
root@debian9:~# mkdir /backup/Volumes root@debian9:~# mkdir /backup/Restore
Modifiez les permissions sur le répertoire /backup :
root@debian9:~# chown -R bacula:bacula /backup root@debian9:~# chmod -R 700 /backup
Configuration du serveur
Ouvrez en édition le fichier /etc/bacula/bacula-dir.conf. Trouvez la section Job comportant le nom BackupClient1 :
... # # Define the main nightly save backup job # By default, this job will back up to disk in /nonexistant/path/to/file/archive/dir Job { Name = "BackupClient1" JobDefs = "DefaultJob" } ...
Modifiez la valeur de la directive Name en BackupLocalFiles :
... # # Define the main nightly save backup job # By default, this job will back up to disk in /nonexistant/path/to/file/archive/dir Job { Name = "BackupLocalFiles" JobDefs = "DefaultJob" } ...
Trouvez maintenant la section Job comportant le nom RestoreFiles :
... # # Standard Restore template, to be changed by Console program # Only one such job is needed for all Jobs/Clients/Storage ... # Job { Name = "RestoreFiles" Type = Restore Client=debian9-fd FileSet="Full Set" Storage = File1 Pool = File Messages = Standard Where = /nonexistant/path/to/file/archive/dir/bacula-restores } ...
Modifiez la valeur de la directive Name en RestoreLocalFiles et la valeur de la directive Where en /backup/Restore :
... # # Standard Restore template, to be changed by Console program # Only one such job is needed for all Jobs/Clients/Storage ... # Job { Name = "RestoreLocalFiles" Type = Restore Client=debian9-fd FileSet="Full Set" Storage = File1 Pool = File Messages = Standard Where = /backup/Restore } ...
Trouvez maintenant la section FileSet comportant le nom Full Set :
... # List of files to be backed up FileSet { Name = "Full Set" Include { Options { signature = MD5 } # # Put your list of files here, preceded by 'File =', one per line # or include an external list with: # # File = <file-name # # Note: / backs up everything on the root partition. # if you have other partitions such as /usr or /home # you will probably want to add them too. # # By default this is defined to point to the Bacula binary # directory to give a reasonable FileSet to backup to # disk storage during initial testing. # File = /usr/sbin } # # If you backup the root directory, the following two excluded # files can be useful # Exclude { File = /var/lib/bacula File = /nonexistant/path/to/file/archive/dir File = /proc File = /tmp File = /sys File = /.journal File = /.fsck } } ...
Modifiez la valeur de la directive File = /usr/sbin en File = /, ajoutez la directive compression = GZIP ainsi que la directive File = /backup dans la section Exclude. Supprimez la directive File = /nonexistant/path/to/file/archive/dir de la même section :
... # List of files to be backed up FileSet { Name = "Full Set" Include { Options { signature = MD5 compression = GZIP } File = / } Exclude { File = /var/lib/bacula File = /backup File = /proc File = /tmp File = /sys File = /.journal File = /.fsck } } ...
Important - La signature de type md5 ou sha1 permet de garantir l'intégrité des pièces sauvegardées. La compression peut être de type GZIP ou LZO. La section contient aussi des exclusions qui peuvent être exprimées soit au niveau des répertoires, par exemple /backup, soit au niveau des extensions de fichiers.
Modifiez maintenant la section Storage :
... # Definition of file Virtual Autochanger device Storage { Name = File1 # Do not use "localhost" here # Address = localhost # N.B. Use a fully qualified name here Address = debian9 SDPort = 9103 Password = "ry2gcjqpunuvbTHTZuUuKeMNODtS3FO0l" Device = FileChgr1 Media Type = File1 Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time ...
Important - Notez la modification de la directive Address qui prend la valeur soit de l'adresse IP de la machine virtuelle Debian_9, soit debian9. Les noeuds de stockage peuvent se trouver sur des serveurs différents.
Trouvez maintenant la section Pool comportant le nom File et modifiez la directive Label Format = Vol- en Label Format = Local- :
... # File Pool definition Pool { Name = File Pool Type = Backup Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 365 days # one year Maximum Volume Bytes = 50G # Limit Volume size to something reasonable Maximum Volumes = 100 # Limit number of Volumes in Pool Label Format = "Local-" # Auto label } ...
Chaque pool possède des propriétés spécifiques :
Propriété | Description |
---|---|
Recycle | Permet de recycler les volumes quand il n'y a plus d'espace ou quand celles-ci sont trop anciennes. |
Autoprune | Permet de recycler les cartouches quand il n'y a plus d'espace disponible. |
Volume Retention | Spécifie la période de retention des sauvegardes sur les volumes. |
Maximum Volume Bytes | Spécifie la taille maximale des cartouches, généralement comprise entre 50 et 300Go. |
Maximum Volumes | Spécifie le nombre maximum de cartouches. |
Label Format | Spécifie le préfixe de nommage des volumes virtuels. |
La section Catalog permet de stipuler l'adresse IP du serveur PostgreSQL :
... # Generic catalog service Catalog { Name = MyCatalog dbname = "bacula"; DB Address = "localhost"; dbuser = "bacula"; dbpassword = "fenestros" } ...
Dernièrement, notez la présence de la section Schedule qui spécifie les ordonnoncements programmés :
... # # When to do the backups, full backup on first sunday of the month, # differential (i.e. incremental since full) every other sunday, # and incremental backups other days Schedule { Name = "WeeklyCycle" Run = Full 1st sun at 23:05 Run = Differential 2nd-5th sun at 23:05 Run = Incremental mon-sat at 23:05 } # This schedule does the catalog. It starts after the WeeklyCycle Schedule { Name = "WeeklyCycleAfterBackup" Run = Full sun-sat at 23:10 } ...
La variable run permet de spécifier la tâche à déclencher à un moment précis :
- Full,
- Differential,
- Incremental.
La section Schedule peut aussi contenir les directives suivantes :
Propriété | Description |
---|---|
FullPool | Spécifie le pool de volumes sur lesquels effectuer les sauvegardes. |
IncrementalPool | Spécifie le pool de volumes sur lesquels effectuer les sauvegardes incrémentales. |
Pool | Spécifie le pool par défaut pour tous les types de sauvegardes. |
Storage | Spécifie le noeud de stockage où rediriger les fichiers de sauvegardes. |
Vérifiez la syntaxe du fichier /etc/bacula/bacula-dir.conf :
root@debian9:~# bacula-dir -tc /etc/bacula/bacula-dir.conf
Configuration du daemon de stockage
Ouvrez en édition le fichier /etc/bacula/bacula-sd.conf.
root@debian9:~# vi /etc/bacula/bacula-sd.conf
Configuration de la ressource de stockage
Trouvez la section Storage :
... Storage { # definition of myself Name = debian9-sd SDPort = 9103 # Director's port WorkingDirectory = "/var/lib/bacula" Pid Directory = "/run/bacula" Maximum Concurrent Jobs = 20 SDAddress = 127.0.0.1 } ...
Modifiez la directive SDAddress :
Storage { # definition of myself Name = debian-sd SDPort = 9103 # Director's port WorkingDirectory = "/var/lib/bacula" Pid Directory = "/var/run/bacula" Maximum Concurrent Jobs = 20 SDAddress = debian9 }
Configuration du periphérique de stockage
Cherchez ensuite la section Device dont la valeur de la directive Name est FileChgr1-Dev1 :
Device { Name = FileChgr1-Dev1 Media Type = File1 Archive Device = /nonexistant/path/to/file/archive/dir LabelMedia = yes; # lets Bacula label unlabeled media Random Access = Yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 }
Modifiez la directive Archive Device :
Device { Name = FileChgr1-Dev1 Media Type = File1 Archive Device = /backup/Volumes LabelMedia = yes; # lets Bacula label unlabeled media Random Access = Yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 }
Testez la syntaxe du fichier /etc/bacula/bacula-sd.conf
Testez la syntaxe du fichier /etc/bacula/bacula-sd.conf avc la commande suivante :
root@debian9:~# bacula-sd -tc /etc/bacula/bacula-sd.conf root@debian9:~#
Redémarrez le service du Director Bacula ainsi qu le service du daemon de stockage de Bacula:
root@debian9:~# systemctl restart bacula-director root@debian9:~# systemctl restart bacula-sd
Sauvegarder le serveur
Pour tester la configuration il convient d'utiliser la console Bacula :
root@debian9:~# bconsole Connecting to Director localhost:9101 1000 OK: 102 debian9-dir Version: 7.4.4 (20 September 2016) Enter a period to cancel a command. *
Entrez la commande label :
*label Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" The defined Storage resources are: 1: File1 2: File2 Select Storage resource (1-2):
Indiquez un nom de volume :
Select Storage resource (1-2): 1 Enter new Volume name: backup-90 Defined Pools: 1: Default 2: File 3: Scratch Select the Pool (1-3):
Sélectionnez le Pool File :
Select the Pool (1-3): 2 Connecting to Storage daemon File1 at debian9:9103 ... Sending label command for Volume "backup-90" Slot 0 ... 3000 OK label. VolBytes=199 VolABytes=0 VolType=1 Volume="backup-90" Device="FileChgr1-Dev1" (/backup/Volumes) Catalog record for Volume "backup-90", Slot 0 successfully created. Requesting to mount FileChgr1 ... 3906 File device ""FileChgr1-Dev1" (/backup/Volumes)" is always mounted. *
Exécutez la sauvegarde :
*run A job name must be specified. The defined Job resources are: 1: BackupLocalFiles 2: BackupCatalog 3: RestoreLocalFiles Select Job resource (1-3):
Choisissez BackupLocalFiles :
Select Job resource (1-3): 1 Run Backup job JobName: BackupLocalFiles Level: Incremental Client: debian9-fd FileSet: Full Set Pool: File (From Job resource) Storage: File1 (From Job resource) When: 2019-03-01 13:41:50 Priority: 10 OK to run? (yes/mod/no):
Confirmez avec yes :
OK to run? (yes/mod/no): yes Job queued. JobId=1 You have messages. *
Consultez les messages :
*messages 01-mars 13:42 debian9-dir JobId 1: No prior Full backup Job record found. 01-mars 13:42 debian9-dir JobId 1: No prior or suitable Full backup found in catalog. Doing FULL backup. 01-mars 13:42 debian9-dir JobId 1: Start Backup JobId 1, Job=BackupLocalFiles.2019-03-01_13.42.39_03 01-mars 13:42 debian9-dir JobId 1: Using Device "FileChgr1-Dev1" to write. 01-mars 13:42 debian9-sd JobId 1: Wrote label to prelabeled Volume "backup-90" on file device "FileChgr1-Dev1" (/backup/Volumes) *
Consultez le statut du director :
*status director debian9-dir Version: 7.4.4 (20 September 2016) x86_64-pc-linux-gnu debian 9.0 Daemon started 01-mars019 13:35, conf reloaded 01-mars-2019 13:35:17 Jobs: run=0, running=1 mode=0 Heap: heap=413,696 smbytes=73,952 max_bytes=74,321 bufs=272 max_bufs=276 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 01-mars019 23:05 BackupLocalFiles backup-90 Full Backup 11 01-mars019 23:10 BackupCatalog backup-90 ==== Running Jobs: Console connected at 01-mars019 13:37 JobId Type Level Files Bytes Name Status ====================================================================== 1 Back Full 2,922 33.69 M BackupLocalFiles is running ==== No Terminated Jobs. ==== *
Important - Notez que le job 1 ci-dessus est en cours d'exécution.
Consultez la liste des jobs :
*list jobs Using Catalog "MyCatalog" +-------+------------------+---------------------+------+-------+----------+----------+-----------+ | jobid | name | starttime | type | level | jobfiles | jobbytes | jobstatus | +-------+------------------+---------------------+------+-------+----------+----------+-----------+ | 1 | BackupLocalFiles | 2019-03-01 13:42:41 | B | F | 0 | 0 | R | +-------+------------------+---------------------+------+-------+----------+----------+-----------+ *
La liste des valeurs du champ jobstatus est la suivante :
jobstatus | jobstatuslong -----------+--------------------------------- C | Created, not yet running R | Running B | Blocked T | Completed successfully E | Terminated with errors e | Non-fatal error f | Fatal error D | Verify found differences A | Canceled by user F | Waiting for Client S | Waiting for Storage daemon m | Waiting for new media M | Waiting for media mount s | Waiting for storage resource j | Waiting for job resource c | Waiting for client resource d | Waiting on maximum jobs t | Waiting on start time p | Waiting on higher priority jobs
A l'issue de 30 minutes, exécutez la commande status director de nouveau :
*status director debian9-dir Version: 7.4.4 (20 September 2016) x86_64-pc-linux-gnu debian 9.0 Daemon started 01-mars019 13:35, conf reloaded 01-mars-2019 13:35:17 Jobs: run=1, running=0 mode=0 Heap: heap=413,696 smbytes=86,926 max_bytes=94,490 bufs=282 max_bufs=314 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 01-mars019 23:05 BackupLocalFiles backup-90 Full Backup 11 01-mars019 23:10 BackupCatalog backup-90 ==== Running Jobs: Console connected at 01-mars019 13:37 No Jobs running. ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 1 Full 105,847 1.201 G OK 01-mars019 14:05 BackupLocalFiles ==== *
Listez les jobs de nouveau :
*list jobs +-------+------------------+---------------------+------+-------+----------+---------------+-----------+ | jobid | name | starttime | type | level | jobfiles | jobbytes | jobstatus | +-------+------------------+---------------------+------+-------+----------+---------------+-----------+ | 1 | BackupLocalFiles | 2019-03-01 13:42:41 | B | F | 105,847 | 1,201,471,625 | T | +-------+------------------+---------------------+------+-------+----------+---------------+-----------+ *
Important - Notez que le job 1 ci-dessus a términé.
Consultez les messages en attente :
*messages 01-mars 14:01 debian9-fd JobId 1: /dev is a different filesystem. Will not descend from / into it. 01-mars 14:03 debian9-fd JobId 1: /run is a different filesystem. Will not descend from / into it. 01-mars 14:05 debian9-sd JobId 1: Elapsed time=00:22:28, Transfer rate=901.8 K Bytes/second 01-mars 14:05 debian9-sd JobId 1: Sending spooled attrs to the Director. Despooling 31,224,614 bytes ... 01-mars 14:05 debian9-dir JobId 1: Bacula debian9-dir 7.4.4 (202Sep16): Build OS: x86_64-pc-linux-gnu debian 9.0 JobId: 1 Job: BackupLocalFiles.2019-03-01_13.42.39_03 Backup Level: Full (upgraded from Incremental) Client: "debian9-fd" 7.4.4 (202Sep16) x86_64-pc-linux-gnu,debian,9.0 FileSet: "Full Set" 2019-03-01 13:42:39 Pool: "File" (From Job resource) Catalog: "MyCatalog" (From Client resource) Storage: "File1" (From Job resource) Scheduled time: 01-mars-2019 13:41:50 Start time: 01-mars-2019 13:42:41 End time: 01-mars-2019 14:05:14 Elapsed time: 22 mins 33 secs Priority: 10 FD Files Written: 105,847 SD Files Written: 105,847 FD Bytes Written: 1,201,471,625 (1.201 GB) SD Bytes Written: 1,215,650,509 (1.215 GB) Rate: 888.0 KB/s Software Compression: 59.6% 2.5:1 Snapshot/VSS: no Encryption: no Accurate: no Volume name(s): backup-90 Volume Session Id: 1 Volume Session Time: 1551443731 Last Volume Bytes: 1,220,016,902 (1.220 GB) Non-fatal FD errors: 0 SD Errors: 0 FD termination status: OK SD termination status: OK Termination: Backup OK 01-mars 14:05 debian9-dir JobId 1: Begin pruning Jobs older than 6 months . 01-mars 14:05 debian9-dir JobId 1: No Jobs found to prune. 01-mars 14:05 debian9-dir JobId 1: Begin pruning Files. 01-mars 14:05 debian9-dir JobId 1: No Files found to prune. 01-mars 14:05 debian9-dir JobId 1: End auto prune. *
Important - Notez la valeur de Termination - Backup OK.
Restaurer la sauvegarde du director
Pour restaurer cette sauvegarde vers /backup/Restore, tapez la commande restore all :
*restore all First you select one or more JobIds that contain files to be restored. You will be presented several methods of specifying the JobIds. Then you will be allowed to select which files from those JobIds are to be restored. To select the JobIds, you have the following choices: 1: List last 20 Jobs run 2: List Jobs where a given File is saved 3: Enter list of comma separated JobIds to select 4: Enter SQL list command 5: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Select full restore to a specified Job date 13: Cancel Select item: (1-13):
Sélectionnez le choix 5 :
Select item: (1-13): 5 Automatically selected Client: debian9-fd Automatically selected FileSet: Full Set +-------+-------+----------+---------------+---------------------+------------+ | jobid | level | jobfiles | jobbytes | starttime | volumename | +-------+-------+----------+---------------+---------------------+------------+ | 1 | F | 105,847 | 1,201,471,625 | 2019-03-01 13:42:41 | backup-90 | +-------+-------+----------+---------------+---------------------+------------+ You have selected the following JobId: 1 Building directory tree for JobId(s) 1 ... ++++++++++++++++++++++++++++++++++++++++++++++ 98,347 files inserted into the tree and marked for extraction. You are now entering file selection mode where you add (mark) and remove (unmark) files to be restored. No files are initially added, unless you used the "all" keyword on the command line. Enter "done" to leave this mode. cwd is: / $
Au prompt, tapez la commande help afin de consulter la liste des commandes disponible dans le shell bacula :
cwd is: / $ help Command Description ======= =========== add add dir/file to be restored recursively, wildcards allowed cd change current directory count count marked files in and below the cd delete delete dir/file to be restored recursively in dir dir long list current directory, wildcards allowed done leave file selection mode estimate estimate restore size exit same as done command find find files, wildcards allowed help print help ls list current directory, wildcards allowed lsmark list the marked files in and below the cd mark mark dir/file to be restored recursively, wildcards allowed markdir mark directory name to be restored (no files) pwd print current working directory unmark unmark dir/file to be restored recursively in dir unmarkdir unmark directory name only no recursion quit quit and do not do restore ? print help $
Tapez la commande ls et notez que l'ensemble des fichiers ont été pré-selectionnés avec une étoile :
$ ls * *bin/ *boot/ *dev *etc/ *home/ *initrd.img *initrd.img.old *lib/ *lib64/ *lost+found *media/ *mnt *opt *root/ *run *sbin/ *srv *test/ *usr/ *var/ *vmlinuz *vmlinuz.old $
Tapez la commande done pour valider la restauration des fichiers pré-selectionnés :
$ done Bootstrap records written to /var/lib/bacula/debian9-dir.restore.1.bsr Bootstrap records written to /var/lib/bacula/debian9-dir.restore.1.bsr The Job will require the following (*=>InChanger): Volume(s) Storage(s) SD Device(s) =========================================================================== backup-90 File1 FileChgr1 Volumes marked with "*" are in the Autochanger. 105,847 files selected to be restored. Run Restore job JobName: RestoreLocalFiles Bootstrap: /var/lib/bacula/debian9-dir.restore.1.bsr Where: /backup/Restore Replace: Always FileSet: Full Set Backup Client: debian9-fd Restore Client: debian9-fd Storage: File1 When: 2019-03-01 14:19:28 Catalog: MyCatalog Priority: 10 Plugin Options: OK to run? (yes/mod/no): <code> Tapez **yes** pour démarrer la restauration : <code> OK to run? (yes/mod/no): yes Job queued. JobId=2 *
Consultez les jobs :
*list jobs +-------+-------------------+---------------------+------+-------+----------+---------------+-----------+ | jobid | name | starttime | type | level | jobfiles | jobbytes | jobstatus | +-------+-------------------+---------------------+------+-------+----------+---------------+-----------+ | 1 | BackupLocalFiles | 2019-03-01 13:42:41 | B | F | 105,847 | 1,201,471,625 | T | | 2 | RestoreLocalFiles | 2019-03-01 14:20:37 | R | F | 0 | 0 | R | +-------+-------------------+---------------------+------+-------+----------+---------------+-----------+ You have messages. *
Consultez le statut du director :
*status director debian9-dir Version: 7.4.4 (20 September 2016) x86_64-pc-linux-gnu debian 9.0 Daemon started 01-mars019 13:35, conf reloaded 01-mars-2019 13:35:17 Jobs: run=1, running=1 mode=0 Heap: heap=290,816 smbytes=84,379 max_bytes=20,750,031 bufs=298 max_bufs=314 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 01-mars019 23:05 BackupLocalFiles backup-90 Full Backup 11 01-mars019 23:10 BackupCatalog backup-90 ==== Running Jobs: Console connected at 01-mars019 13:37 JobId Type Level Files Bytes Name Status ====================================================================== 2 Rest Rest 0 0 RestoreLocalFiles is running ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 1 Full 105,847 1.201 G OK 01-mars019 14:05 BackupLocalFiles ==== *
Important - Notez que le job 2 ci-dessus est en cours d'exécution.
A l'issue de 10 minutes, exécutez la commande status director de nouveau :
*status director debian9-dir Version: 7.4.4 (20 September 2016) x86_64-pc-linux-gnu debian 9.0 Daemon started 01-mars019 13:35, conf reloaded 01-mars-2019 13:35:17 Jobs: run=2, running=0 mode=0 Heap: heap=290,816 smbytes=82,877 max_bytes=20,750,031 bufs=278 max_bufs=314 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 01-mars019 23:05 BackupLocalFiles backup-90 Full Backup 11 01-mars019 23:10 BackupCatalog backup-90 ==== Running Jobs: Console connected at 01-mars019 13:37 No Jobs running. ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 1 Full 105,847 1.201 G OK 01-mars019 14:05 BackupLocalFiles 2 Restore 105,847 3.007 G OK 01-mars019 14:23 RestoreLocalFiles ==== *exit
Sauvegarder un client
Afin d'organiser les fichiers de configuration de Bacula, créez le répertoire /etc/bacula/conf.d dans la machine virtuelle Debian_9 :
root@debian9:~# mkdir /etc/bacula/conf.d
Editez la fin du fichier /etc/bacula/bacula-dir.conf en ajoutant la ligne qui permettra d'inclure les fichiers *.conf du répertoire /etc/bacula/conf.d dans la configuration de Bacula :
root@debian9:~# vi /etc/bacula/bacula-dir.conf root@debian9:~# cat /etc/bacula/bacula-dir.conf ... # # Restricted console used by tray-monitor to get the status of the director # Console { Name = debian9-mon Password = "jWJdcTIJWn0DAf9X38tmc6u6_fvAv5Ft7" CommandACL = status, .status } @|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"
Créez maintenant le fichier /etc/bacula/conf.d/pools.conf suivant :
root@debian9:~# cat /etc/bacula/conf.d/pools.conf Pool { Name = RemoteFile Pool Type = Backup Label Format = Remote- Recycle = yes AutoPrune = yes Volume Retention = 365 days Maximum Volume Bytes = 50G Maximum Volumes = 100 }
Chaque pool possède des propriétés spécifiques :
Propriété | Description |
---|---|
Recycle | Permet de recycler les volumes quand il n'y a plus d'espace ou quand celles-ci sont trop anciennes. |
Autoprune | Permet de recycler les cartouches quand il n'y a plus d'espace disponible. |
Volume Retention | Spécifie la période de retention des sauvegardes sur les volumes. |
Maximum Volume Bytes | Spécifie la taille maximale des cartouches, généralement comprise entre 50 et 300Go. |
Maximum Volumes | Spécifie le nombre maximum de cartouches. |
LabelFormat | Spécifie le préfixe de nommage des volumes virtuels. |
Créer maintenant le fichier /etc/bacula/conf.d/filesets.conf qui sera utilisé pour sauvegarder le client :
root@debian9:~# cat /etc/bacula/conf.d/filesets.conf FileSet { Name = "Home and Etc" Include { Options { signature = MD5 compression = GZIP } File = /home File = /etc } Exclude { File = /home/trainee/not_important } }
Modifiez le fichier /etc/hosts :
root@debian9:~# cat /etc/hosts 127.0.0.1 localhost #127.0.1.1 debian9.i2tch.loc debian9 10.0.2.9 debian9.i2tch.loc debian9 10.0.2.16 centos7.i2tch.loc centos7 # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Dans la machine virtuelle CentOS_7, installez le Bacula File Daemon (FD) :
[root@centos7 ~]# yum install bacula-client
Créez le fichier qui sera exclu :
[root@centos7 ~]# touch /home/trainee/not_important
Modifiez le fichier /etc/hosts de la machine virtuelle CentOS_7 :
[root@centos7 ~]# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 127.0.1.1 centos7.i2tch.loc centos7 10.0.2.9 debian9.i2tch.loc debian9 10.0.2.16 centos7.i2tch.loc centos7
Générez un mot de passe aléatoire :
[root@centos7 ~]# date +%s | sha256sum | base64 | head -c 33 ; echo YTczMzk0NDRhNmJjZDIxMDc4YWM4ZGExO
A Faire - Copiez le mot de passe.
Ouvrez maintenant le fichier /etc/bacula/bacula-fd.conf de la machine virtuelle CentOS_7 et modifiez les deux sections Director :
# List Directors who are permitted to contact this File daemon # Director { Name = debian9-dir Password = "YTczMzk0NDRhNmJjZDIxMDc4YWM4ZGExO" } # # Restricted Director, used by tray-monitor to get the # status of the file daemon # Director { Name = debian9-mon Password = "YTczMzk0NDRhNmJjZDIxMDc4YWM4ZGExO" Monitor = yes } ...
Important - Notez que le mot de passe est celui copié dans l'étape précédente.
Ensuite, modifiez la valeur des variables Name et FDAddress dans la section FileDaemon :
... # # "Global" File daemon configuration specifications # FileDaemon { # this is me Name = centos7.i2tch.loc-fd FDport = 9102 # where we listen for the director WorkingDirectory = /var/spool/bacula Pid Directory = /var/run Maximum Concurrent Jobs = 20 FDAddress = 10.0.2.16 } ...
Dernièrement, configurez la section Messages pour envoyer les traces de la journalisation au serveur :
... # Send all messages except skipped files back to Director Messages { Name = Standard director = debian9.i2tch.loc = all, !skipped, !restored } ...
Vérifiez maintenant que la configuration ne comporte pas d'erreurs :
[root@centos7 ~]# bacula-fd -tc /etc/bacula/bacula-fd.conf [root@centos7 ~]#
Activez et démarrez le service bacula-fd :
[root@centos7 ~]# systemctl status bacula-fd ● bacula-fd.service - Bacula-FileDaemon, a Backup-client Loaded: loaded (/usr/lib/systemd/system/bacula-fd.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:bacula-fd(8) [root@centos7 ~]# systemctl enable bacula-fd Created symlink from /etc/systemd/system/multi-user.target.wants/bacula-fd.service to /usr/lib/systemd/system/bacula-fd.service. [root@centos7 ~]# systemctl start bacula-fd [root@centos7 ~]# systemctl status bacula-fd ● bacula-fd.service - Bacula-FileDaemon, a Backup-client Loaded: loaded (/usr/lib/systemd/system/bacula-fd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2019-03-01 14:11:16 CET; 3s ago Docs: man:bacula-fd(8) Main PID: 24458 (bacula-fd) CGroup: /system.slice/bacula-fd.service └─24458 /usr/sbin/bacula-fd -f -c /etc/bacula/bacula-fd.conf -u root -g root Mar 01 14:11:16 centos7.fenestros.loc systemd[1]: Started Bacula-FileDaemon, a Backup-client.
Dernièrement, créez un répertoire pour recevoir les restaurations du serveur Bacula :
[root@centos7 ~]# mkdir -p /bacula/restore [root@centos7 ~]# chown -R bacula:bacula /bacula [root@centos7 ~]# chmod -R 700 /bacula
Revenez à la machine virtuelle Debian_9 et créez le fichier /etc/bacula/conf.d/clients.conf :
root@debian9:~# vi /etc/bacula/conf.d/clients.conf root@debian9:~# cat /etc/bacula/conf.d/clients.conf Client { Name = centos7.i2tch.loc-fd Address = centos7.i2tch.loc FDPort = 9102 Catalog = MyCatalog Password = "YTczMzk0NDRhNmJjZDIxMDc4YWM4ZGExO" File Retention = 30 days Job Retention = 6 months AutoPrune = yes } Job { Name = "BackupClientHost" JobDefs = "DefaultJob" Client = centos7.i2tch.loc-fd Pool = RemoteFile FileSet="Home and Etc" }
Important - Notez que la valeur de la directive Password est celle de la directive Password de la section Director du fichier /etc/bacula/bacula-fd.conf du client.
Vérifiez la configuration de Bacula :
root@debian9:~# bacula-dir -tc /etc/bacula/bacula-dir.conf root@debian9:~#
Redémarrez le service du director :
root@debian9:~# systemctl restart bacula-director
Connectez-vous au bconsole :
root@debian9:~# bconsole Connecting to Director localhost:9101 1000 OK: 102 debian9-dir Version: 7.4.4 (20 September 2016) Enter a period to cancel a command. *
Consultez le statut des clients :
*status client The defined Client resources are: 1: debian9-fd 2: centos7.i2tch.loc-fd Select Client (File daemon) resource (1-2):
Choisissez le client centos7.i2tch.loc-fd :
Select Client (File daemon) resource (1-2): 2 Connecting to Client centos7.i2tch.loc-fd at 10.0.2.16:9102 centos7.i2tch.loc-fd Version: 5.2.13 (19 February 2013) x86_64-redhat-linux-gnu redhat (Core) Daemon started 01-Mar-19 16:03. Jobs: run=0 running=0. Heap: heap=135,168 smbytes=21,689 max_bytes=21,836 bufs=52 max_bufs=53 Sizeof: boffset_t=8 size_t=8 debug=0 trace=0 Running Jobs: Director connected at: 01-Mar-19 16:03 No Jobs running. ==== Terminated Jobs: ==== *
Saisissez la commande run pour démarrer une sauvegarde :
*run Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" A job name must be specified. The defined Job resources are: 1: BackupLocalFiles 2: BackupCatalog 3: RestoreLocalFiles 4: BackupClientHost Select Job resource (1-4):
Saisissez le numéro correspondant à BackupClientHost :
Select Job resource (1-4): 4 Run Backup job JobName: BackupClientHost Level: Incremental Client: centos7.i2tch.loc-fd FileSet: Home and Etc Pool: RemoteFile (From Job resource) Storage: File1 (From Job resource) When: 2019-03-02 09:28:57 Priority: 10 OK to run? (yes/mod/no):
Saisissez le mot yes et validez :
OK to run? (yes/mod/no): yes Job queued. JobId=3 You have messages. *
Consultez le status du director :
*status director debian9-dir Version: 7.4.4 (20 September 2016) x86_64-pc-linux-gnu debian 9.0 Daemon started 02-mars019 09:10, conf reloaded 02-mars-2019 09:10:12 Jobs: run=1, running=0 mode=0 Heap: heap=413,696 smbytes=85,756 max_bytes=117,812 bufs=295 max_bufs=327 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 02-mars019 23:05 BackupLocalFiles backup-90 Incremental Backup 10 02-mars019 23:05 BackupClientHost Remote-0002 Full Backup 11 02-mars019 23:10 BackupCatalog backup-90 ==== Running Jobs: Console connected at 02-mars019 09:27 No Jobs running. ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 1 Full 105,847 1.201 G OK 01-mars019 14:05 BackupLocalFiles 2 Restore 105,847 3.007 G OK 01-mars019 14:23 RestoreLocalFiles 3 Full 4,133 17.05 M OK 02-mars019 09:30 BackupClientHost ==== *
Important - Notez que le job 3 ci-dessus a términé.
Restaurer le client
Le processus de restauration du client est identique à celui du director :
*restore all Using Catalog "MyCatalog" First you select one or more JobIds that contain files to be restored. You will be presented several methods of specifying the JobIds. Then you will be allowed to select which files from those JobIds are to be restored. To select the JobIds, you have the following choices: 1: List last 20 Jobs run 2: List Jobs where a given File is saved 3: Enter list of comma separated JobIds to select 4: Enter SQL list command 5: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Select full restore to a specified Job date 13: Cancel Select item: (1-13): 5 Defined Clients: 1: centos7.i2tch.loc-fd 2: debian9-fd Select the Client (1-2): 1 Automatically selected FileSet: Home and Etc +-------+-------+----------+------------+---------------------+-------------+ | jobid | level | jobfiles | jobbytes | starttime | volumename | +-------+-------+----------+------------+---------------------+-------------+ | 3 | F | 4,133 | 17,055,838 | 2019-03-02 09:29:44 | Remote-0002 | +-------+-------+----------+------------+---------------------+-------------+ You have selected the following JobId: 3 Building directory tree for JobId(s) 3 ... +++++++++++++++++++++++++++++++++++++++++ 3,416 files inserted into the tree and marked for extraction. You are now entering file selection mode where you add (mark) and remove (unmark) files to be restored. No files are initially added, unless you used the "all" keyword on the command line. Enter "done" to leave this mode. cwd is: / $ ls *etc/ *home/ $ done Bootstrap records written to /var/lib/bacula/debian9-dir.restore.1.bsr Bootstrap records written to /var/lib/bacula/debian9-dir.restore.1.bsr The Job will require the following (*=>InChanger): Volume(s) Storage(s) SD Device(s) =========================================================================== Remote-0002 File1 FileChgr1 Volumes marked with "*" are in the Autochanger. 4,133 files selected to be restored. Run Restore job JobName: RestoreLocalFiles Bootstrap: /var/lib/bacula/debian9-dir.restore.1.bsr Where: /backup/Restore Replace: Always FileSet: Full Set Backup Client: centos7.i2tch.loc-fd Restore Client: centos7.i2tch.loc-fd Storage: File1 When: 2019-03-02 09:38:34 Catalog: MyCatalog Priority: 10 Plugin Options: OK to run? (yes/mod/no): yes Job queued. JobId=4 *
Consultez les jobs :
*list jobs +-------+-------------------+---------------------+------+-------+----------+---------------+-----------+ | jobid | name | starttime | type | level | jobfiles | jobbytes | jobstatus | +-------+-------------------+---------------------+------+-------+----------+---------------+-----------+ | 1 | BackupLocalFiles | 2019-03-01 13:42:41 | B | F | 105,847 | 1,201,471,625 | T | | 2 | RestoreLocalFiles | 2019-03-01 14:20:37 | R | F | 105,847 | 3,007,506,278 | T | | 3 | BackupClientHost | 2019-03-02 09:29:44 | B | F | 4,133 | 17,055,838 | T | | 4 | RestoreLocalFiles | 2019-03-02 09:38:43 | R | F | 0 | 0 | R | +-------+-------------------+---------------------+------+-------+----------+---------------+-----------+ *
Consultez le statut du director :
*status director debian9-dir Version: 7.4.4 (20 September 2016) x86_64-pc-linux-gnu debian 9.0 Daemon started 02-mars019 09:10, conf reloaded 02-mars-2019 09:10:12 Jobs: run=1, running=1 mode=0 Heap: heap=303,104 smbytes=88,483 max_bytes=1,684,200 bufs=326 max_bufs=328 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 02-mars019 23:05 BackupLocalFiles backup-90 Incremental Backup 10 02-mars019 23:05 BackupClientHost Remote-0002 Full Backup 11 02-mars019 23:10 BackupCatalog backup-90 ==== Running Jobs: Console connected at 02-mars019 09:27 JobId Type Level Files Bytes Name Status ====================================================================== 4 Rest Rest 0 0 RestoreLocalFiles is running ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 1 Full 105,847 1.201 G OK 01-mars019 14:05 BackupLocalFiles 2 Restore 105,847 3.007 G OK 01-mars019 14:23 RestoreLocalFiles 3 Full 4,133 17.05 M OK 02-mars019 09:30 BackupClientHost ==== *
Important - Notez que le job 4 ci-dessus est en cours d'exécution.
A l'issue de 2 minutes, exécutez la commande status director de nouveau :
*status director debian9-dir Version: 7.4.4 (20 September 2016) x86_64-pc-linux-gnu debian 9.0 Daemon started 02-mars019 09:10, conf reloaded 02-mars-2019 09:10:12 Jobs: run=2, running=0 mode=0 Heap: heap=303,104 smbytes=86,967 max_bytes=1,684,200 bufs=306 max_bufs=332 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 02-mars019 23:05 BackupLocalFiles backup-90 Incremental Backup 10 02-mars019 23:05 BackupClientHost Remote-0002 Full Backup 11 02-mars019 23:10 BackupCatalog backup-90 ==== Running Jobs: Console connected at 02-mars019 09:27 No Jobs running. ==== Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 1 Full 105,847 1.201 G OK 01-mars019 14:05 BackupLocalFiles 2 Restore 105,847 3.007 G OK 01-mars019 14:23 RestoreLocalFiles 3 Full 4,133 17.05 M OK 02-mars019 09:30 BackupClientHost 4 Restore 4,133 58.99 M OK 02-mars019 09:38 RestoreLocalFiles ==== *exit
Important - Notez que le job 4 ci-dessus a términé.
LAB #7 - AMANDA
Présentation
L'outil AMANDA (Advanced Maryland Automated Disk Archiver) est un logiciel client/serveur offrant une chaîne complète : sauvegarde, vérification et restauration. Le service AMANDA utilise les ports tcp/10080 et udp/10080. AMANDA est utilisé sur plus d'un million de serveurs dans le monde.
Installation d'AMANDA
AMANDA peut être installé à partir des dépôts en utilisant la commande yum :
[root@centos7 ~]# yum install -y amanda*
Les paquets installés sont :
[root@centos7 ~]# rpm -qa | grep amanda amanda-server-3.3.3-21.el7.x86_64 amanda-client-3.3.3-21.el7.x86_64 amanda-3.3.3-21.el7.x86_64 amanda-libs-3.3.3-21.el7.x86_64
La version d'AMANDA peut être vérifié avec la commande suivante :
[root@centos7 ~]# amadmin --version amadmin-3.3.3
Configuration du Serveur
Créez le répertoire ServerNetBackup :
[root@centos7 ~]# mkdir /etc/amanda/ServerNetBackup
Créez maintenant le fichier de configuration /etc/amanda/ServerNetBackup/amanda.conf :
[root@centos7 ~]# vim /etc/amanda/ServerNetBackup/amanda.conf [root@centos7 ~]# cat /etc/amanda/ServerNetBackup/amanda.conf org "ServerNetBackup" # Organization name for reports mailto "root@localhost" # Email address to receive reports netusage 10000 Kbps # Bandwidth limit, 10M dumpcycle 1 week # Backup cycle is 7 days runspercycle 7 # Run 7 times every 7 days tapecycle 15 tapes # Dump to 15 different tapes during the cycle tpchanger "chg-disk" # The tape-changer glue script changerfile "/etc/amanda/ServerNetBackup/changer" # The tape-changer file tapedev "file://central_backup/ServerNetBackup/slots" # The no-rewind tape device to be used tapetype HARDDISK # Define the type of tape infofile "/etc/amanda/ServerNetBackup/curinfo" # Database directory logdir "/etc/amanda/ServerNetBackup/logs" # Log directory indexdir "/etc/amanda/ServerNetBackup/index" # Index directory define tapetype HARDDISK { # Define our tape behaviour length 100000 mbytes # Every tape is 100GB in size } amrecover_changer "changer" # Changer for amrecover define dumptype global { # The global dump definition maxdumps 2 # The maximum number of backups run in parallel estimate calcsize # Estimate the backup size before dump holdingdisk yes # Dump to temp disk (holdingdisk) before backup to tape index yes # Generate index. For restoration usage } define dumptype root-tar { # How to dump root's directory global # Include global (as above) program "GNUTAR" # Program name for compress comment "root partitions dumped with tar" compress none # No compress index # Index this dump priority low # Priority level } define dumptype user-tar { # How to dump user's directory root-tar # Include root-tar (as above) comment "user partitions dumped with tar" priority medium # Priority level } define dumptype comp-user-tar { # How to dump & compress user's directory user-tar # Include user-tar (as above) compress client fast # Compress in client side with less CPU (fast) } define dumptype simple-gnutar-local { auth "local" compress none program "GNUTAR" }
Créez ensuite le répertoire pour contenir les sauvegardes :
[root@centos7 ~]# mkdir -p /central_backup/ServerNetBackup/slots
L'utilisateur chargé des sauvegardes est amandabackup. Modifiez donc les permissions sur les répertoires créés :
[root@centos7 ~]# chown amandabackup.disk /central_backup -Rf [root@centos7 ~]# chown amandabackup.disk /etc/amanda/ServerNetBackup -Rf
Devenez l'utilisateur amandabackup :
[root@centos7 ~]# su - amandabackup -bash-4.2$
Create the virtual tape. This is where the backup files will be stored. We will need to create 15 slots as per tapecycle keyword:
-bash-4.2$ for n in `seq 1 15`; do mkdir /central_backup/ServerNetBackup/slots/slot${n}; done
We then need to label all slots:
-bash-4.2$ for n in `seq 1 15` ; do amlabel ServerNetBackup ServerNetBackup-${n} slot ${n}; done Reading label... Found an empty tape. Writing label 'ServerNetBackup-1'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-2'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-3'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-4'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-5'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-6'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-7'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-8'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-9'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-10'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-11'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-12'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-13'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-14'... Checking label... Success! Reading label... Found an empty tape. Writing label 'ServerNetBackup-15'... Checking label... Success!
Créez les répertoires référencés dans le fichier de configuration amanda.conf :
-bash-4.2$ mkdir /etc/amanda/ServerNetBackup/curinfo -bash-4.2$ mkdir /etc/amanda/ServerNetBackup/logs -bash-4.2$ mkdir /etc/amanda/ServerNetBackup/index
We need to define what to backup in a file called disklist. As user amandabackup, create this file:
-bash-4.2$ vim /etc/amanda/ServerNetBackup/disklist -bash-4.2$ cat /etc/amanda/ServerNetBackup/disklist debian9.i2tch.loc /home comp-user-tar debian9.i2tch.loc /etc root-tar # localhost /etc simple-gnutar-local -bash-4.2$ exit
Configuration du Client
root@debian9:~# apt-get install amanda-client
As user amandabackup, add following line into /var/lib/amanda/.amandahosts to specify where is Amanda backup server:
root@debian9:~# vi /var/backups/.amandahosts root@debian9:~# cat /var/backups/.amandahosts localhost backup centos7.i2tch.loc amandabackup amdump
Devenez l'utilisateur amandabackup :
[root@centos7 ~]# su - amandabackup -bash-4.2$
Exécutez la commande amcheck :
-bash-4.2$ amcheck ServerNetBackup Amanda Tape Server Host Check ----------------------------- slot 15: volume 'ServerNetBackup-15' Will write to volume 'ServerNetBackup-15' in slot 15. NOTE: skipping tape-writable test NOTE: host info dir /etc/amanda/ServerNetBackup/curinfo/debian9.i2tch.loc does not exist NOTE: it will be created on the next run. NOTE: index dir /etc/amanda/ServerNetBackup/index/debian9.i2tch.loc does not exist NOTE: it will be created on the next run. Server check took 0.609 seconds Amanda Backup Client Hosts Check -------------------------------- Client check: 1 host checked in 2.546 seconds. 0 problems found. (brought to you by Amanda 3.3.3)
Lancez la sauvegarde su serveur :
-bash-4.2$ amdump ServerNetBackup
Vérifiez la sauvegarde :
-bash-4.2$ amreport ServerNetBackup Hostname: centos7.fenestros.loc Org : ServerNetBackup Config : ServerNetBackup Date : March 1, 2019 These dumps were to tape ServerNetBackup-15. The next tape Amanda expects to use is: 1 new tape. The next new tape already labelled is: ServerNetBackup-1. STATISTICS: Total Full Incr. Level:# -------- -------- -------- -------- Estimate Time (hrs:min) 0:00 Run Time (hrs:min) 0:00 Dump Time (hrs:min) 0:00 0:00 0:00 Output Size (meg) 4.3 4.3 0.0 Original Size (meg) 4.7 4.7 0.0 Avg Compressed Size (%) 91.7 91.7 -- DLEs Dumped 2 2 0 Avg Dump Rate (k/s) 690.0 690.0 -- Tape Time (hrs:min) 0:00 0:00 0:00 Tape Size (meg) 4.3 4.3 0.0 Tape Used (%) 0.0 0.0 0.0 DLEs Taped 2 2 0 Parts Taped 2 2 0 Avg Tp Write Rate (k/s) 876.8 876.8 -- USAGE BY TAPE: Label Time Size % DLEs Parts ServerNetBackup-15 0:00 4384k 0.0 2 2 NOTES: planner: Adding new disk debian9.i2tch.loc:/home. planner: Adding new disk debian9.i2tch.loc:/etc. taper: Slot 15 with label ServerNetBackup-15 is usable taper: tape ServerNetBackup-15 kb 4384 fm 2 [OK] DUMP SUMMARY: DUMPER STATS TAPER STATS HOSTNAME DISK L ORIG-kB OUT-kB COMP% MMM:SS KB/s MMM:SS KB/s ------------------------------- ------------------------------------- ------------- debian9.i2tch.loc /etc 0 4320 4320 -- 0:05 856.1 0:04 1080.0 debian9.i2tch.loc /home 0 460 64 13.9 0:01 49.6 0:01 64.0 (brought to you by Amanda version 3.3.3)
Constatez la présence des sauvegardes :
[root@centos7 ~]# ls -l /central_backup/ServerNetBackup/slots/slot15 total 4484 -rw-------. 1 amandabackup disk 32768 Mar 1 19:00 00000.ServerNetBackup-15 -rw-------. 1 amandabackup disk 98554 Mar 1 19:00 00001.debian9.i2tch.loc._home.0 -rw-------. 1 amandabackup disk 4456448 Mar 1 19:00 00002.debian9.i2tch.loc._etc.0
Automatiser les sauvegardes
[root@centos7 ~]# vi /root/backup.sh [root@centos7 ~]# cat /root/backup.sh #!/bin/bash su - amandabackup -c "/usr/sbin/amdump ServerNetBackup"
[root@centos7 ~]# vi /root/verif.sh [root@centos7 ~]# cat /root/verif.sh #!/bin/bash su - amandabackup -c "/usr/sbin/amcheck ServerNetBackup"
[root@centos7 ~]# vi /etc/cron.d/backup [root@centos7 ~]# cat /etc/cron.d/backup 00 0 * * 1-5 /root/backup.sh 00 8 * * 1-5 /root/verif.sh
[root@centos7 ~]# chmod u+x backup.sh [root@centos7 ~]# chmod u+x verif.sh
<html>
Copyright © 2020 Hugh NORRIS.<br><br>
</html>