backup-usb | ||
backuppcfs | ||
README.md | ||
run-bkp-usb | ||
udev-bkp-usb |
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
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 :
# 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 :
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 :
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 :
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é.