Si la copia se realiza en algún terminal de shell (es decir, bash), se le cp
puede pedir explícitamente que copie el archivo al que apunta un enlace --dereference
, en lugar del enlace en sí. El comportamiento predeterminado de cp
es copiar archivos siguiendo sus enlaces, pero muchos navegadores de archivos gráficos parecen tener un comportamiento predeterminado al intentar copiar enlaces y generalmente conservan la mayoría de los atributos.
man cp
-a, --archive
same as -dR --preserve=all
-d same as --no-dereference --preserve=links
-L, --dereference
always follow symbolic links in SOURCE
Ejemplo
touch SomeFile.txt
echo "some content" > someFile.txt
ln -s -T someFile.txt someLink
echo "Some content for the test file." > someLink
mkdir someDirectory
ln -s -T someDirectory someDirLink
El hecho de que se someLink
trata de un enlace se muestra mediante el l
indicador en la primera posición de la salida del listado (y 'd' designa un directorio).
ls -l
drwxrwxr-x. 2 user group 4096 Aug 17 17:17 someDirectory
lrwxrwxrwx. 1 user group 13 Aug 17 17:17 someDirLink -> someDirectory
-rw-rw-r--. 1 user group 32 Aug 17 17:01 someFile.txt
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 someLink -> someFile.txt
El archivo contiene el contenido y el enlace apunta al archivo, pero se puede usar de casi cualquier forma que pueda ser el archivo. (Tenga en cuenta el tamaño del archivo de enlace frente al tamaño del archivo de texto: 32 bytes frente a 12 bytes).
cat someFile.txt
Some content for the test file.
cat someLink
Some content for the test file.
Primero, copiando el enlace a un directorio. Luego copiando el archivo al directorio, a través del enlace. (Lo siguiente también muestra que los enlaces de directorio funcionan de manera similar a los enlaces de archivo):
cp -a someLink someDirLink/newCopy
cp -L someLink someDirectory/newCopy.txt
ll -l someDirLink/
lrwxrwxrwx. 1 user group 12 Aug 17 17:12 newCopy -> someFile.txt
-rw-rw-r--. 1 user group 32 Aug 17 17:36 newCopy.txt
Precaución
Se pueden hacer enlaces para apuntar a una ruta completa o una ruta relativa. Dado que este ejemplo usaba un enlace basado en la ruta relativa del objetivo que estaba en el mismo directorio que el enlace que se estaba creando, el enlace se rompió cuando se copió a un nuevo directorio.
cat someDirLink/newCopy
cat: someDirLink/newCopy: No such file or directory
cat someDirLink/newCopy.txt
Some content for the test file.