Outils pour utilisateurs

Outils du site


scriptshell

Ceci est une ancienne révision du document !


Gestion de liens dynamiques

cre.sh
#/bin/bash
#(ne pas utiliser sh car l'IFS \n ne fonctionne pas!!!! )
#Auteur Bertrand VANDEPORTAELE 2013
#Ce script permet de construire une arborescence dans un dossier vide (définit par $DEST) dans laquelle des liens dynamiques
#vont pointer vers des fichiers/dossiers respectant la même arborescence mais sur plusieurs disques distincts
#Utile pour un média center avec plusieurs disques, on peut ainsi lister dans une même dossier le contenu des différents disque et naviguer comme s'il n'y avait qu'un disque
#exemple: 2 disques durs /media/HD1 et /media/HD2, contenant chacun les dossiers hd et 3D
#on cree sur ~/films/ les dossiers hd et 3D
#puis on crée des liens symboliques de tous les fichiers /media/HD1/hd et /media/HD2/hd vers ~/films/hd
#                               et  de tous les fichiers /media/HD1/sd et /media/HD2/sd vers ~/films/sd
#pour cela régler
#DEST="~/films/"
#LISTCAT=$'hd\nsd\n'   
#LISTDRV=$'/media/HD1\n/media/HD2\n'
 
 
# il faut que la partition destination supporte les liens dynamiques
 
#http://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne
#http://bash.cyberciti.biz/guide/$IFS
 
old_IFS=$IFS  # sauvegarde de l'ancien séparateur de champ  
IFS=$'\n'     #le séparateur par defaut (espace) ne va pas car les noms de fichiers listés peuvent en contenir mais doivent être traités en une seule fois
              #on règle un nouveau séparateur de champ, le caractère fin de ligne  
 
#emplacement pour stocker les liens dynamiques, doit pointer sur un dossier vide car on va y effacer tout les contenus des
#dossiers catégories
DEST="/home/bvdp/films/"
#liste de noms de dossiers correspondant à des catégories
#il faut le $  au début pour que le \n soit interpreté correctement comme un IFS
LISTCAT=$'hd\nsd\n3D\nseries\n3Dsound\n'   
#liste de noms de dossiers ou rechercher les catégories
LISTDRV=$'/media/HD2TO/\n/media/HD2TO2/\n/media/HD2TO3/\n/media/HD2TO4/\n/media/HD3TO1/\n/media/JY500GO\n'
 
echo destination=$DEST
 
#--------------------------------------------------------
#--------------------------------------------------------
#--------------------------------------------------------
#-------suppression des fichiers existants et création des dossiers si besoin---------------
rm $DEST/lnscript		
for i in $LISTCAT 	
do
echo $i
rm $DEST/$i/*
mkdir $DEST/$i #au cas ou ils n'existeraient pas
done
#--------------------------------------------------------
for i in $LISTCAT 	
do
echo $i
#echo "next"
for j in $LISTDRV 	
do
echo $j
#echo "noxt"
for fich in `ls $j/$i`
do
echo "ln -s \"$j/$i/$fich\" \"$DEST/$i/$fich\"" >>$DEST/lnscript
echo $fich
done
done
done
#--------------------------------------------------------
 
bash $DEST/lnscript   #éxecute le script de génération des liens symboliques
 
 
IFS=$old_IFS     # rétablissement du séparateur de champ par défaut  
scriptshell.1387210585.txt.gz · Dernière modification : 2013/12/16 17:16 de bvandepo