diff --git a/src/scripts/backup_nocloud.sh b/src/scripts/backup_nocloud.sh index 0ce9e069ebdfd15eae4e85c7b37c6d302088f0b2..2a5a30ece3f435823e09045a2ed03545e91a4012 100755 --- a/src/scripts/backup_nocloud.sh +++ b/src/scripts/backup_nocloud.sh @@ -23,6 +23,10 @@ do_clean(){ then fusermount -zu $encfsmount fi + if $luks + then + cryptsetup luksClose $luksname + fi umount -f $dev } @@ -182,6 +186,8 @@ usage(){ echo " -i | --interrupt list Interrompt les services donnés (liste séparé par des virgules) durant la création de l'archive tar." + echo " -l | --luks pass Utilise des disques chiffres luks, + protégés par le mot de passe donné" echo " -w | --warnonly En cas d'erreur d'une action de sauvegarde, le programme affiche un message mais ne s'nterrompt pas" @@ -199,6 +205,8 @@ gitlab=false mysql=false postgres=false encfs=false +luks=false +luksname=crypt_backup archive=false clone=false MIN_SIZE=$((1024*1024)) @@ -210,7 +218,7 @@ for arg in "$@"; do shift set -- "$@" `echo $arg | sed 's/^-\(-.\).*$/\1/'` done -optspec=":hvC:dcguws:mpe:i:aP:" +optspec=":hvC:dcguws:mpe:i:l:aP:" while getopts "$optspec" optchar; do case "${optchar}" in h) @@ -257,6 +265,10 @@ while getopts "$optspec" optchar; do i) SERVICES="${OPTARG//,/ }" ;; + l) + luks=true + ENCPASS="$OPTARG" + ;; w) warn_only=true; ;; @@ -290,7 +302,15 @@ do_log "démarrage le `date`" [ ! -d "$dest" ] && mkdir "$dest" -/bin/mount -t auto $dev $dest +if $luks +then + echo $ENCPASS | cryptsetup luksOpen $dev $luksname + test_and_fail $? "Impossible de déchiffrer le disque, abandon" + /bin/mount -t auto /dev/mapper/$luksname $dest + echo "OK" > $dest/test +else + /bin/mount -t auto $dev $dest +fi test_and_fail $? "Impossible de monter le disque destination, abandon" if $encfs