#!/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