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é.