Comandos Linux: cp

8.- Preservar enlaces duros y simbólicos al copiar

Los enlaces duro y simbólicos son una práctica muy común en linux así que es probable que en algún momento vayas a necesitar hacer la copia de algunos archivos que en realidad son enlaces y esta opción de va a ser muy útil.

El comando cp sin parámetros copia los enlaces como un archivo en vez de copiar el enlace. Para copiar manteniendo los enlaces puedes utilizar el parámetro -d. Mira la diferencia de al comento de copiar un enlace en el siguiente ejemplo:

$ ls -l
-rw-r--r-- 1 lm lm 12 Jul 21 18:40 archivo.txt
lrwxrwxrwx 1 lm lm 11 Jul 21 19:43 enalce-archivo.txt -> archivo.txt

Aquí tenemos un enlace «enlace-archivo.txt» que apunta a «archivo.txt» y al momento de hacer una copia sin parámetros de «enlace-archivo.txt» lo que se copia es un archivo nuevo de nombre «nuevo-enlace».

$ cp enalce-archivo.txt nuevo-enalce
$ ls -l
-rw-r--r-- 1 lm lm 12 Jul 21 18:40 archivo.txt
lrwxrwxrwx 1 lm lm 11 Jul 21 19:43 enalce-archivo.txt -> archivo.txt
-rw-r--r-- 1 lm lm 12 Jul 21 19:43 nuevo-enalce

Veamos ahora la diferencia de este compoartamiento cuando se utilizar el parámetro -d

$ cp -d enalce-archivo.txt nuevo-enalce
$ ls -l
-rw-r--r-- 1 lm lm 12 Jul 21 18:40 archivo.txt
lrwxrwxrwx 1 lm lm 11 Jul 21 19:43 enalce-archivo.txt -> archivo.txt
lrwxrwxrwx 1 lm lm 11 Jul 21 19:48 nuevo-enalce -> archivo.txt

Puedes ver que ahora «nuevo-enlace» es efectivamente un enlace a «archivo.txt»

 

9.- No sobre escribir al copiar un archivo

El comando cp también tiene un parámetro para evitar que un archivo se sobre escriba al copiar un achivo, si ese archivo ya existe en la ubicación de destino y no deseas que se sobre escriba puedes utilizar la opción -n

cp -n archivo.tx ./respaldo

 

10.- Pedir confirmación antes de sobre escribir

Cuando deseas realizar la copia de uno o varios archivos y deseas que algunos si se sobre escriban y otro no puedes utilizar la opción -i que te solicita una respuesta «y» o «s» para confirmar la copia y se sobre escriba o «n» para omitir la copia de ese archivo y así evitar que se sobre escriba.

cp -i archivo ./respaldo/

En este ejemplo vemos como se solicita confirmación en ambos casos en uno respondemos que no y en otro que sí, además usamos la opción -v para tener un mensaje de confirmación de la copia. Este es el ejemplo al responder «no»

$ cp -iv archivo.txt ./respaldo/
cp: overwrite ‘./respaldo/archivo.txt’? n

El siguiente ejemplo es cuando indicamos que si deseamos que se sobre escriba el archivo.

$ cp -iv archivo.txt ./respaldo/
cp: overwrite ‘./respaldo/archivo.txt’? y
‘archivo.txt’ -> ‘./respaldo/archivo.txt’

Como vemos en este último ejemplo la línea final indica que el archivo se ha copiado al directorio «respaldo».

 

11.- Crear enlaces duros en vez de copiar

Cuando deseas crear enlaces duros en vez de copiar los archivos puedes utilizar la opción -l, el uso de este parámetro no realizará una copia del archivo sino que creará un enlace duro (o hard link) hacia el archivo.

$ cat archivo.txt
123 456 789

Si tu tienes un texto en «archivo.txt» puedes utilizar el parámetro -l para crear un enlace duro del archivo dentro del directorio «respaldo»

cp -l archivo.txt ./respaldo/enlace-duro

Si se consulta el valor de «enlace-duro»  y luego se modificas el valor de «archivo.txt» te darás cuenta que al volver valor de «enlace-duro» también cambió pues no es un archivo individual sino que apunta «archivo.txt». Mira el ejemplo:

$ cat ./respaldo/enlace-duro
123 456 789
$ echo "1234 5678 9012" > archivo.txt
$ cat ./respaldo/enlace-duro
1234 5678 9012

12.- Crear enlaces simbólicos al copiar

Los enlaces simbólicos son mas comunes y también puedes crear este tipo de enlaces cuando usas el comando linux cp, en vez de hacer copias los archivos.

$ cp -s archivo.txt enlace-simbolico
$ ls -l
-rw-r--r-- 2 lm lm 15 Jul 22 10:58 archivo.txt
lrwxrwxrwx 1 lm lm 11 Jul 22 11:14 enlace-simbolico -> archivo.txt

Es importante mencionar que con la opción -s solo se pueden hacer enlaces simbólicos en el directorio actual.

13.- Copiar sin seguir los enlaces simbólicos

Cundo copiamos algún directorio que tiene enlaces simbólicos es importante saber como queremos copiar esos enlaces. No seguir los enlaces simbólicos copiará esos enlaces y seguirán siendo enlaces hacia los archivos que apuntan y esto se logra con el parámetro -P . Mira el ejemplo:

$ ls -l
lrwxrwxrwx 1 lm lm 30 Jul 22 11:22 archivo-numeros.txt -> /home/lm/Documents/archivo.txt
drwxr-xr-x 2 lm lm 4096 Jul 22 11:13 respaldo
$ cp -P archivo-numeros.txt ./respaldo/
$ ls -l respaldo/
lrwxrwxrwx 1 lm lm 30 Jul 22 11:26 archivo-numeros.txt -> /home/lm/Documents/archivo.txt

Si te fijas la copia que se hizo dentro del directorio «respaldo» se ha copiado como un enlace simbólico que apunta al mismo archivo en la carpeta /home/lm/Documents/

14.- Copiar siguiendo los enlaces simbólicos

En ocasiones son útiles lo enlaces simbólicos pero hay ocasiones que requieres que los archivos reales estén en una ubicación, para hacer una copia de este tipo es necesario seguir los enlaces simbólicos y hacer una copia real del archivo. Para hacer esto puedes usar el parámetro -L. Aquí te muestro la diferencia respecto al ejemplo anterior.

$ ls -l
lrwxrwxrwx 1 lm lm 30 Jul 22 11:22 archivo-numeros.txt -> /home/lm/Documents/archivo.txt
drwxr-xr-x 2 lm lm 4096 Jul 22 11:13 respaldo
$ cp -L archivo-numeros.txt ./respaldo/
$ ls -l respaldo/
-rw-r--r-- 1 lm lm 12 Jul 22 11:41 archivo-numeros.txt
-rw-r--r-- 1 lm lm 15 Jul 22 10:58 enlace-duro

Si observas el archivo que estas copiando «archivos-numeros.txt» es un enlace simbólico, y al momento de copiarlo con el parámetro -L el archivo que se copia dentro del directorio respaldo es un archivo común y corriente, a diferencia del ejemplo anterior donde era también un enlace simbólico.

This entry was posted in Comandos Linux and tagged , , , . Bookmark the permalink.

2 Responses to "Comandos Linux: cp"

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*


Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.