ln, cp et cie
Suite à quelques questions que je me suis posées sur les liens dur, je me suis livré à un petit exercice tout bête, afin d’étudier le comportement de la commande cp, lorsque des liens dur sont impliqués. L’objectif étant de voir, quand, lors d’un copie, le lien est maintenu ou cassé.
Je commence par créer deux fichiers…disons… zaza et zozo :
$ touch zaza zozo
Et un lien zeze vers le fichier zaza
$ ln zaza zeze
$ ls -li z*
2198036 -rw-r--r-- 2 joel users 0 2008-11-14 16:53 zaza
2198036 -rw-r--r-- 2 joel users 0 2008-11-14 16:53 zeze
2208208 -rw-r--r-- 1 joel users 0 2008-11-14 16:53 zozo
zaza et zeze sont sur le même inode. Il s’agit bien du même fichier.
Je copie maintenant zozo en « écrasant » zaza.
$ cp zozo zaza
$ ls -li z*
2198036 -rw-r--r-- 2 joel users 0 2008-11-14 16:57 zaza
2198036 -rw-r--r-- 2 joel users 0 2008-11-14 16:57 zeze
2208208 -rw-r--r-- 1 joel users 0 2008-11-14 16:53 zozo
Le lien dur n’est pas cassé : cp se contente d’ouvrir le fichier cible en O_WRONLY|O_CREAT,
si le fichier existe déjà, il réécrit dans le même fichier.
$ cp -a zozo zaza
$ ls -li z*
2208776 -rw-r--r-- 1 joel users 0 2008-11-14 16:53 zaza
2198036 -rw-r--r-- 1 joel users 0 2008-11-14 16:57 zeze
2208208 -rw-r--r-- 1 joel users 0 2008-11-14 16:53 zozo
Par contre, avec l’option -a, cp crée un nouveau fichier, libérant ainsi l’inode et cassant le lien.
Laissez votre message après le bip...Biiiiip



Commentaires
Pas encore de commentaire.
Laisser un commentaire