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

(requis)

(requis)