Problème
En copiant des fichiers avec cp -H
ou cp -L
, j'obtiens les mêmes résultats:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Cette réponse décrit ici les deux options comme similaires, sauf si elles étaient utilisées en combinaison avec -R
. Pas pour moi. Les fichiers à liaison fixe deviennent des copies renommées des fichiers vers lesquels ils pointent.
Question :
Quel est le bon usage de cp -H
et cp -L
? Est-ce le comportement attendu?
Ma tentative de résoudre :
man cp
me dit tout à fait la même chose pour les deux options, mais info cp
de » la formulation rend encore plus déroutant pour moi. Peut-être que l'on peut m'aider à décomposer un peu ceci:
-H
Si un argument de ligne de commande spécifie un lien symbolique, copiez le fichier sur lequel il pointe plutôt que le lien symbolique lui - même. Cependant, copiez (en préservant sa nature) tout lien symbolique rencontré lors d'une traversée récursive.
Cela me semble une contradiction: je suppose que «la nature d’un lien symbolique » c’est qu’elle pointe quelque part…
-L, --dereference
Suivez les liens symboliques lorsque vous les copiez. Avec cette option,cp
vous ne pouvez pas créer de lien symbolique. Par exemple, un lien symbolique (vers un fichier normal) dans l'arborescence source sera copié dans un fichier normal dans l'arborescence de destination.
Je sais qu'un lien symbolique n'est pas un fichier ordinaire, mais… j'avoue que je suis dépassé par cette explication ici.
info cp
, cherchez-R
. Il ditCopy directories recursively.
Mais vous testez avec des non-annuaires. La différence est de ce qui est dans les répertoires que vous copiez, pas les arguments de ligne de commande.info cp
et je me suis efforcé de comprendre la signification du choix des mots pour cette option & ndash; et à propos de cette publication. L’affichage contient également le libellé actuel deinfo cp
- c’estRéponses:
Avec les liens symboliques, les outils peuvent faire deux choses:
Dire que
-H
"préserve sa nature" n'est pas une contradiction. Considérez l'alternative. Si vous utilisez-L
, tous les liens symboliques trouvéscp
seront ouverts et leur contenu copié dans le nom du fichier cible. Donc, la source était un lien symbolique, mais sa copie n'est pas un lien symbolique. Donc, il "a perdu sa nature en tant que lien symbolique".Considérer
la source
La différence de comportement entre
-L
et-H
vient quand-r
est également spécifiée.cp
ne créera pas de liens symboliques dans des sous-répertoires avec-L -r
mais le fera si vous utilisez-H -r
.la source