backuppcExportOnUsbDisk/README.md

197 lines
5.6 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Export des sauvegardes BackupPC sur disques externes USB chiffrés
=================================================================
Installation
---------------
* Installer les dépendances :
```bash
apt-get install inoticoming cryptsetup beep libfuse-perl util-linux
```
* mettre les fichiers suivant dans */usr/local/sbin* :
* backup-usb
* backuppcfs
* udev-bkp-usb
* run-bkp-usb
* créer les dossiers */mnt/backuppcfs* et */mnt/usb* :
```bash
mkdir /mnt/backuppcfs /mnt/usb
```
* créer le fichier */etc/udev/rules.d/99-bkp-usb.rules* :
```bash
# A l'insertion du disque, lancement du script de backup
# Rechargement des regles udev manuellement si necessaire : `udevadm control --reload-rules`
# Exemple :
# Disk 1
#  ACTION=="add", ENV{DEVTYPE}=="disk", ENV{ID_FS_UUID}=="41fc79d3-25fd-4424-9fc8-92479deead27", RUN+="/usr/local/sbin/udev-bkp-usb"
```
* lancer la commande :
```bash
udevadm control --reload-rules
```
* ajouter les lignes suivantes dans le fichier */etc/rc.local* :
```bash
# Run backup on USB device detection (trigger by udev rule)
inoticoming --logfile /var/log/bkp-usb.log /var/run/ --stderr-to-log --stdout-to-log --regex '^bkp-usb-detected$' /usr/local/sbin/run-bkp-usb \;
```
* lancer manuellement la commande *inoticoming* du fichier précédent (ou rebooter)
* mettre en place la rotation du fichier de log en créant le fichier */etc/logrotate.d/backup-usb* :
```
/var/log/bkp-usb.log {
rotate 7
weekly
compress
missingok
notifempty
}
```
Création du mot de passe de et la clé LUKS
------------------------------------------
```bash
pwgen -1 -y 40 > /root/.luks.pwd
dd if=/dev/urandom of=/root/.luks.key bs=1024 count=4
chmod 0600 /root/.luks.pwd /root/.luks.pwd
```
Creation d'un disque USB
------------------------
- brancher le disque sur le serveur puis se connecter en tant que root au serveur
- détecter le nom qu'a pris le disque (en regardant le résultat de la commande *dmesg* par exemple), par exemple **/dev/sdg**
- formater le disque :
```bash
cryptsetup -q --use-urandom luksFormat /dev/sdg /root/.luks.pwd
cryptsetup luksAddKey /dev/sdg /root/.luks.key --key-file /root/.luks.pwd
```
- "Ouvrir" le disque chiffré :
```bash
cryptsetup luksOpen /dev/sdg bkp-usb --key-file /root/.luks.key
```
- Formater le disque chiffré en ext4 :
```bash
mkfs.ext4 /dev/mapper/bkp-usb
tune2fs -i0 -c0 -m0 /dev/mapper/bkp-usb
```
- Fermer le disque chiffré :
```bash
cryptsetup close bkp-usb
```
- Récupérer l'identifiant UUID du disque :
```bash
udevadm info -q all /dev/sdg|grep 'ID_FS_UUID='
```
Exemple :
```bash
root@bkphost:~# udevadm info -q all /dev/sdg|grep 'ID_FS_UUID='
E: ID_FS_UUID=41fc79d3-25fd-4424-9fc8-92479deead27
```
- Ajouter l'exécution automatique de l'export des backups pour ce disque
dans le fichier le règle udev */etc/udev/rules.d/99-bkp-usb.rules* :
```bash
# Disk X
ACTION=="add", ENV{DEVTYPE}=="disk",
ENV{ID_FS_UUID}=="41fc79d3-25fd-4424-9fc8-92479deead27",
RUN+="/usr/local/sbin/udev-bkp-usb"
```
- Recharger les règles UDEV :
```bash
udevadm control --reload-rules
```
- Débrancher puis re-brancher le disque une première fois pour vérifier qu'il est bien détecter et que le premier export (long) soit lancé.
**Note :** A des fins de tests, il est possible de simuler l'exécution du script */usr/local/sbin/udev-bkp-usb* par UDEV de la manière suivante :
```bash
ACTION=add DEVTYPE=disk DEVNAME=/dev/sdg /usr/local/sbin/udev-bkp-usb
```
Lancer manuellement l'export des sauvegardes sur un disque USB déjà branché
---------------------------------------------------------------------------
Vous pouvez utiliser le script *run-bkp-usb* pour lancer manuellement l'export des sauvegardes sur un disque USB déjà branché :
```
Usage : /usr/local/sbin/run-bkp-usb [device]
device To manually run export, provide the USB Drive device path
```
Exemple :
```bash
run-bkp-usb /dev/sdc
```
Voir l'état actuel d'un export
------------------------------
Vous pouvez utiliser le paramètre *-s* du script *backup-usb* pour voir l'état actuel d'un export :
```bash
# backup-usb -s
2017-04-21 - 10h52m54s -- [INFO] Fichier de lock present
2017-04-21 - 10h52m54s -- [INFO] Un export de sauvegarde est en cours (commande rsync détectée)
2017-04-21 - 10h52m54s -- [INFO] Disque LUKS ouvert
2017-04-21 - 10h52m54s -- [INFO] Disque LUKS monté
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/bkp-usb 3.6T 1.2T 2.5T 31% /mnt/usb
2017-04-21 - 10h52m54s -- [INFO] BackupPC-FS monté
```
Ouvrir et monté un disque USB chiffré manuellement
--------------------------------------------------
Si vous avez besoin de voir ce qu'un de vos disques USB chiffrés contient, vous pouvez utiliser le paramètre *-o* du script *backup-usb* :
```bash
backup-usb -o -u /dev/sdc
```
Le disque chiffré USB sera ouvert et monté dans son point de montage habituel (*/mnt/usb* par défaut). Le fichier de *lock* sera positionné et vous pourrez démonter et fermer le disque USB chiffré une fois fini à l'aide du paramètre *-c* du script *backup-usb* :
```bash
backup-usb -c
```
Lancer une vérification du système de fichiers d'un disque USB chiffré
----------------------------------------------------------------------
En cas de doute ou de problème avec le système de fichier d'un disque USB, vous pouvez utiliser le paramètre *-f* du script *backup-usb* :
```bash
backup-usb -f -u /dev/sdc
```
Le disque USB chiffré sera ouvert et un *fsck* sera lancé sur le système de fichiers qu'il contient. Une fois terminé et si le *fsck* s'est bien terminé, le disque USB chiffré sera fermé.