backuppcExportOnUsbDisk/README.md

3.9 KiB

Export des sauvegardes BackupPC sur disques externes USB chiffrés

Installation

  • Installer les dépendances :
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 :

mkdir /mnt/backuppcfs /mnt/usb
  • créer le fichier /etc/udev/rules.d/99-bkp-usb.rules :
# 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 :
udevadm control --reload-rules
  • ajouter les lignes suivantes dans le fichier /etc/rc.local :
# 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

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 :
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é :
cryptsetup luksOpen /dev/sdg bkp-usb --key-file /root/.luks.key
  • Formater le disque chiffré en ext4 :
mkfs.ext4 /dev/mapper/bkp-usb
tune2fs -i0 -c0 -m0 /dev/mapper/bkp-usb
  • Fermer le disque chiffré :
cryptsetup close bkp-usb
  • Récupérer l'identifiant UUID du disque :
udevadm info -q all /dev/sdg|grep 'ID_FS_UUID='

Exemple :

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 :
# 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 :
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 :

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 :

run-bkp-usb /dev/sdc