#1 Le 20/12/2017, à 12:00
- DonutMan75
[Résolu] cp, ln et lien physique : qu'ai je fait ?
Bonjour à tous,
j'ai un répertoire assez gros /A/gros_repertoire qui contient pas mal de données.
Pour des raisons d'organisation logique, je souhaitais stocker ce répertoire à un autre endroit de mon arborescence (mais toujours sur le même filesystem), mettons /B/gros_repertoire
Comme ni A ni B n'est plus "important" d'un point de vue logique, je me suis dit que j'allais créer un lien physique plutôt que symbolique.
L'avantage étant que, si quelqu'un par mégarde supprimait des données dans /A/gros_repertoire, eh bien les données sont toujours dispo !
Voici deux exemples de ce que je veux faire (ces commandes n'ont pas été entrées séquentiellement, j'ai supprimé à chaque fois le répertoire cible)
$ cp -al /A/gros_repertoire /B/gros_repertoire # Commande 1
$ cp -al /A/gros_repertoire/* /B/gros_repertoire/* # Commande 2
Les commandes 1 et 2 sont il me semble équivalentes.
En particulier, la syntaxe de 1 ne va pas créer de lien physique du répertoire source mais en créer un nouveau dans /B/, puis pour chacun des fichiers de /A/ on crée un lien physique dans B.
Je m'en rends compte avec des ll bien placés et en regardant le nombre de lien indiqué juste avant donut donut.
$ ll | grep A
drwxr-xr-x 2 donut donut 4096 Dec 20 10:53 A
$ ll /A/* | head
dtotal 192036
drwxr-xr-x 2 donut donut 4096 Dec 20 10:53 .
drwxr-xr-x 4 donut donut 4096 Dec 20 11:24 ..
-rw-r--r-- 1 donut donut 219 Feb 20 2017 toto
$ cp -al /A/gros_repertoire /B/gros_repertoire
$ ll /A/* | head
dtotal 192036
drwxr-xr-x 2 donut donut 4096 Dec 20 10:53 .
drwxr-xr-x 4 donut donut 4096 Dec 20 11:24 ..
-rw-r--r-- 2 donut donut 219 Feb 20 2017 toto
Un ls -i montre par ailleurs que les répertoires source et cible ont des inode différents, alors que les fichiers qu'ils contiennent ont des inodes identiques deux à deux.
Ai-je bien compris ce qu'il s'est passé ?
Mais pour terminer, j'ai voulu tester la même chose avec ln et là c'est le drame :
$ ln -T /A/gros_repertoire /B/gros_repertoire # Commande 3
ln: `/A/gros_repertoire/': hard link not allowed for directory
La je n'arrive pas à bien comprendre cette limitation. En quoi cela est gênant d'avoir des liens physiques sur répertoire ?
Merci pour votre retour
Donut
Dernière modification par DonutMan75 (Le 20/12/2017, à 15:28)
Hors ligne
#2 Le 20/12/2017, à 13:50
- bruno
Re : [Résolu] cp, ln et lien physique : qu'ai je fait ?
Bonjour,
À ma connaissance on ne peut pas faire de lien physique (hard link) sur des répertoires. D'après la page de man de ln, l'option -d ou -F permettrait de le forcer sur certains systèmes (pas sous Linux).
Si ce n'est pas permis, c'est que c'est dangereux (boucles et ambiguïtés sur les répertoires parents . et ..). Voir des explications plus poussées (en anglais) :
https://unix.stackexchange.com/question … unix-linux
https://askubuntu.com/questions/210741/ … irectories
Dernière modification par bruno (Le 20/12/2017, à 14:08)
#3 Le 20/12/2017, à 15:27
- DonutMan75
Re : [Résolu] cp, ln et lien physique : qu'ai je fait ?
Bonjour bruno,
merci pour ton retour.
En effet, ça semble évident une fois que c'est expliqué !
Now, if you were allowed to do this for directories, two different directories in different points in the filesystem could point to the same thing. In fact, a subdir could point back to its grandparent, creating a loop.
Quoiqu'il en soit, il me semble qu'avoir utilisé des liens physiques dans mon cas est "propre" et plus robuste que les liens logiques.
Merci pour ton retour
Donut
Hors ligne