#! /bin/sh
REP_SOURCE="/mnt/live/mnt" # Dossier à explorer
# On cherche le dossier salixlive 
S_PATH=$(find ${REP_SOURCE} -type d -name salixlive)

S_OLD=${S_PATH%\/*}/slxsave.xfs
S_NEW=${S_PATH%\/*}/new_slxsave.xfs
S_BAK=${S_PATH%\/*}/_slxsave.xfs
SMOUNT_OLD="/mnt/old_slxsave"
SMOUNT_NEW="/mnt/new_slxsave"
S_SIZE_OLD=$(du -m $S_OLD | sed 's/\([0-9]*\).*/\1/')

echo "Le disque persistant $S_OLD à été trouvé."

read -p 'Voulez vous redimentionner le disque persistant ? (o/n) ' S_RESIZE
read -p 'Voulez vous nettoyer le disque pour ne garder que le dossier personnel /home/one ? (o/n) ' S_CLEAN
read -p 'Voulez vous sauvegarder le disque persistant actuel ? (o/n) ' S_KEEP

case "$S_RESIZE" in
    non | n | N | Non | NON ) S_SIZE_NEW=$S_SIZE_OLD ;;
    * ) read -p "Vérifiez que la taille du disque souhaitée ne dépasse pas l'espace disponible actuellement sur la clé.
Taille du nouveau disque (en Mo) : " S_SIZE_NEW ;;
esac

echo "Création d'un disque persistant temporaire (new_slxsave.xfs)."
dd if=/dev/zero of=$S_NEW bs=1M count=$S_SIZE_NEW

echo "Formatage du disque en ext2."
mkfs.ext2 -F $S_NEW # Formatage en ext2

mkdir $SMOUNT_OLD # Création des dossiers temporaires
mkdir $SMOUNT_NEW
mount -o loop $S_OLD $SMOUNT_OLD # Montage des disques persistants
mount -o loop $S_NEW $SMOUNT_NEW

echo "Copie du contenu de l'ancien disque vers le nouveau."
cp -ra $SMOUNT_OLD/* $SMOUNT_NEW # Copie du contenu de l'ancien slxsave vers le nouveau en conservant liens symboliques, permissions, groupes, users...

	case "$S_CLEAN" in
    non | n | N | Non | NON ) echo "Le disque est copié à l'identique";;
    * ) echo "Nettoyage du disque" && for file in $SMOUNT_NEW/changes/* ; do [[ $file != $SMOUNT_NEW'/changes/home' ]] && rm -r $file ; done ;;
	esac

umount $SMOUNT_OLD # Démontage des disques persistants
umount $SMOUNT_NEW
  
rmdir $SMOUNT_OLD # Suppression des dossiers temporaires
rmdir $SMOUNT_NEW

case "$S_KEEP" in
    non | n | N | Non | NON ) echo "Suppression de l'ancien disque (slxsave.xfs)" && rm $S_OLD ;;
    * ) echo "Sauvegarde de l'ancien disque (renommé en _slxsave.xfs). 
Pour le restaurer, il suffira de supprimer le fichier 'slxsave.xfs' à la racine de la clé et d'enlever le '_' du fichier '_slxsave.xfs'... 
Attention, ne vous trompez pas ! :) " && mv $S_OLD $S_BAK ;;
esac

mv $S_NEW $S_OLD # Le nouveau fichier remplace l'ancien
echo "Création du nouveau disque (slxsave.xfs) effectuée"
  



