#!/bin/bash

# duplique sur le disque /dev/hdc la partition
# dont le répertoire de montage ou le numéro
# est passé en paramètre.
# si le paramètre est un numéro
if [ "`echo $1 | grep \"^[01]*[0-9]\"`" ]
then
    # vérifier si la partition /dev/hda est montée
    partorig=/dev/hda$1
    set `df $partorig | tail -1` x

    # si c'est le cas
    if [ "$1" = "$partorig" ]
    then
        # récupérer son répertoire de montage
        repertoire=$6
    # sinon
    else
        # créer un répertoire de montage temporaire
        repertoire=`echo $partorig | cut -c5-`
        test ! -d $repertoire && mkdir $repertoire

        # monter la partition à dupliquer
        mount -r $partorig $repertoire

        # et mémoriser la présence d'une partition à démonter
        demonter=oui
    fi
# sinon, le paramètre est un répertoire
else
    # mémoriser ce répertoire
    repertoire=$1
fi

# récupérer le nom de la partition associée au répertoire
set `df $repertoire | tail -1` x

# si la partition à dupliquer est montée
if [ "$6" = "$repertoire" ]
then
    # chercher la partition de destination
    partdest=`echo $1 | sed "s/hda/hdc/"`

    # créer un répertoire de montage pour cette partition
    repdest=`echo $partdest | cut -c5-`
    test ! -d $repdest && mkdir $repdest

    echo -e "\nFabrication du système de fichier $partdest\n"
    mkfs -text3 $partdest

    echo -e "\nCopie de la partition $repertoire de Linux\n"
    cd $repertoire
    mount $partdest $repdest

    # si la partition à dupliquer est /
    if [ "$repertoire" = "/" ]
    then
        # quelques traitements spécifiques
        find . -mount | cut -c3- | egrep -v "/(proc|sys|media)/" | sort | cpio -pdmuv $repdest
        rmdir $repdest$repdest

    # sinon, simple duplication
    else
        find . -mount | cut -c3- | sort | cpio -pdmuv $repdest
    fi

    # démonter la partition dupliquée et supprimer son point de montage
    umount $repdest
    rmdir  $repdest
# sinon
else
    echo Pas de répertoire $repertoire monté
fi

# si on a eu besoin de monter la partition à dupliquer
if [ "$demonter" ]
then
    # démonter cette partition et supprimer son point de montage
    cd /
    umount $partorig
    rmdir  $repertoire
fi