Problema
Al copiar archivos con cp -H
o cp -L
, obtengo los mismos resultados:
$ ls -l fileA
fileA -> fileB
$ cp fileA somewhere/ -H
$ ls -l somewhere/
fileA # fileA is a copy of fileB, only renamed, with same properties!
Esta respuesta aquí describe ambas opciones como MENOS similares, utilizadas en combinación con -R
. No para mí. Los archivos soft-hardlinked se convierten en copias renombradas de los archivos a los que apuntan en la fuente.
Pregunta :
¿Cuál es el uso adecuado de cp -H
y cp -L
? ¿Es este el comportamiento esperado?
Mi intento de resolver :
man cp
me dice lo mismo para ambas opciones, pero info cp
la redacción lo hace aún más confuso para mí. Tal vez uno pueda ayudarme a analizar esto un poco:
-H
Si un argumento de línea de comando especifica un enlace simbólico, copie el archivo al que apunta en lugar del enlace simbólico en sí. Sin embargo, copie (preservando su naturaleza) cualquier enlace simbólico que se encuentre a través del recorrido recursivo.
Esto me parece una contradicción: supongo que » la naturaleza de un enlace simbólico « es que apunta a alguna parte ...
-L, --dereference
Siga los enlaces simbólicos cuando copie de ellos. Con esta opción,cp
no se puede crear un enlace simbólico. Por ejemplo, un enlace simbólico (a un archivo normal) en el árbol de origen se copiará a un archivo normal en el árbol de destino.
Sí sé que un enlace simbólico no es un archivo normal, pero ... admito que estoy muy cuestionado con esta explicación aquí.
info cp
, busca-R
. DiceCopy directories recursively.
Pero estás probando con no directorios. La diferencia está en lo que hay dentro de los directorios que está copiando, no en los argumentos de la línea de comandos.info cp
y traté de averiguar qué significa realmente la elección de palabras en esta opción & ndash; y de qué trata esta publicación. La publicación también contiene la redacción real deinfo cp
- por lo tanto, al menos debo haberla abierto ...;)Respuestas:
Con los enlaces simbólicos, las herramientas tienen dos cosas que pueden hacer:
Decir que
-H
"preserva su naturaleza" no es una contradicción. Considera la alternativa. Si lo usa-L
,cp
se abrirán los hallazgos de enlaces simbólicos y su contenido se copiará al nombre del archivo de destino. Entonces la fuente era un enlace simbólico, pero su copia no es un enlace simbólico. Entonces "perdió su naturaleza como un enlace simbólico".Considerar
fuente
La diferencia en el comportamiento entre
-L
y-H
viene cuando-r
se especifica también.cp
no creará enlaces simbólicos en subdirectorios,-L -r
pero lo hará si lo usa-H -r
.fuente