1 votes

Supprimer le lien dur entre deux fichiers

J'ai fait un fichier lié en dur dans le terminal par commande : ln somefile somefile_h et l'utilisait pour s'amuser. Maintenant, je suis confronté à une question : comment puis-je supprimer le lien entre ces deux fichiers et les utiliser séparément ? Quelqu'un sait-il ?

5voto

vanadium Points 56513

Pour créer des fichiers indépendants, faites ce qui suit (en supposant que somefile se trouve dans votre répertoire actuel) :

cp somefile temp_somefile
rm somefile
mv temp_somefile somefile

Cela créera un fichier identique somefile qui n'est plus lié à somefile_h . Avec cette approche, il n'est pas nécessaire de savoir où se trouve le fichier lié sur votre système de fichiers.

Si vous savez où se trouve le fichier lié, il est plus court de supprimer ce fichier lié et de faire ensuite une copie normale du fichier (précédemment lié) sous le même nom de fichier :

rm <path>/somefile_h
cp somefile <path>/somefile_h

Un moyen d'y parvenir avec un cp La commande unique a été fournie par l'utilisateur bac0n :

cp --remove-destination somefile <path>/somefile_h

Ici, le fichier de destination (lié) est supprimé avant de faire une copie. Ainsi, la copie devient un "nouveau" fichier normal qui n'est plus lié au fichier source.

1voto

Pasi Suominen Points 904

Un fichier lié en dur est comme un nom pointant vers le même inode.

Pour retirer votre lien dur, il suffit

rm linked_name

Cela n'affecte pas votre nom de fichier original et les données sur le disque, il y a un compteur de référence inode qui s'incrémente lors de la liaison et se décrémente lorsque vous délier l'instance. Lorsque le compteur atteint zéro, l'inode est supprimé et l'espace est marqué comme libre.

Pour faire une copie, utilisez cp et pour le lien, utilisez ln

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X