Comandos Linux: cp

comandos linux cp recursive files directory archivos copiar directoriosCopiar es una tarea indispensable en cualquier sistema operativo y en Linux puedes encontrar el comando cp que te permite copiar archivos y directorios pero no solo eso, cp es un comando linux rico en funcionalidades además te permite copiar enlaces (duros y simbólicos), permisos, propiedades, etc. Solo necesitas conocer todo el repertorio de parámetros de este comando que va más allá de solo copiar un archivo. Te explico este comando con más de 19 ejemplos prácticos.

Comandos Linux: cp

El comando linux cp es uno de los comandos básicos que cualquier persona interesada en aprender Linux debe saber. Este comando sirve para copiar archivos y directorios dentro del sistema de archivos (file system) de un sistema Linux.

Utilizar este comando es muy simple pues solo indicas el nombre del archivo a copiar y el nombre del archivo o directorio donde quieres que se copie, pero también tiene algunas otras funciones mediante algunos parámetros que te pueden ser útiles en un momento dado.

Para ver estos parámetros mas avanzados te mostraré ejemplos prácticos para que veas que hace el comando cp en cada uno de ellos. Recuerda que para ver como se usa cualquier comando, su sintaxis, los parámetros y su función, siempre puedes utilizar el comando man comand, en este caso man cp y también puedes usar cp –help para ver mas detalles del comando cp.

Sintaxis del comando linux cp

cp [opciones]... [-T] origen destino
cp [opciones]... origen... directorio
cp [opciones]... -t directorio origen...

Estas son algunas de las opciones que tiene el comando linux cp:

opción descripción
-a archive files
-f copia forzada al remover el archivo destino si es necesario
-i interactivo, pide confirmación del usuario antes de sobre escribir
-l enlaces en vez de copia
-L seguir enlaces simbólicos
-n no sobre escribir archivos
-R copia recursiva recursive copy (including hidden files)
-u actualizar, copia cuando la fuente es mas reciente que el destino
-v muestra mensajes informativos

Comencemos con los ejemplos y vamos a ir de los mas simples a los mas complejos.

1.- Copiar un archivo a un directorio

Este es el uso más sencillo de del comando cp que es copiar un archivo dentro de un directorio. Este uso del comando cp no requiere de opciones, solo indicar el archivo fuente y el directorio destino que puede ser una ruta absoluta o una ruta relativa.

cp archivo-01.txt /home/usuario/Downloads/tmp2/

Este mimso ejemplo se puede realizar con una ruta relativa

cp archivo.txt ./Downloads/tmp2/

 

2.- Copiar 2 (o más) archivos a un directorio

El comando linux cp permite indicar la copia de uno o más archivo que serán copiados a un directorio.

cp archivo.txt programa.py ~/bin/programa/

 

3.- Copiar todos los archivos a un directorio

Es posible utilizar los caracteres comodines * y ? para indicar que deseamos copiar cualquier nombre de archivo, en este caso todos los archivos de con los caracteres «.txt»

cp *.txt respaldo

Si se deseara realizar la copia de todos los archivos a un directorio se puede hacer con este comando:

cp * directorio

 

4.- Copiar un directorio completo

Una de las cosas que siempre se quiere hacer con el comando cp y que desconcierta a cualquier principiante es la copia de un directorio por que si no se hace correctamente arroja un error como este :

$ cp directorio ./respaldo/
cp: omitting directory ‘directorio’

Lo primero que se viene a la mente es «no se pueden copiar directorio» pero no es que no se pueda sino que un directorio es solo una lista de archivos, entonces necesitamos copiar también los archivos que hay dentro de la lista de este «archivo especial» o directorio, para hacer esto se requiere del parámetro -r, así el comando correcto es este:

cp -r directorio ./respaldo/

 

5.- Respaldar antes de sobre escribir

Es común que quieras copiar archivos con el mismo nombre y en la mayoría de las ocasiones es útil tener un respaldo del archivo que se va a sobre escribir, y créeme es buena practica siempre generar un respaldo de algo que vas a sobre escribir. Para esto el comando cp tiene una opción muy práctica que poco se conoce y es el parámetro -b o –backup y se emplea de esta forma:

cp --backup archivo.txt ./respaldo/

Al copiar «archivo.txt» al directorio «respaldo» lo que primero es generar una copia del archivo que se encuentra dentro del directorio respaldo y le agrega el caracter ~ al final y posteriormente copia y sobre escribe «archivo.txt». Si tu das un ls al directorio respaldo verías algo como esto:

$ cp --backup archivo.txt ./respaldo/
$ ls -l respaldo
-rw-r--r-- 1 lm lm 12 Jul 21 18:41 archivo.txt
-rw-r--r-- 1 lm lm 4 Jul 21 18:40 archivo.txt~

Si utilizar la opción –backup=numbered entonces se creará un nuevo archivo de respaldo cada vez que se sobre escriba el archivo que estás copiando. Aquí un ejemplo:

$ cp --backup=numbered archivo.txt ./respaldo/
$ ls -l respaldo
-rw-r--r-- 1 lm lm 12 Jul 21 19:07 archivo.txt
-rw-r--r-- 1 lm lm 4 Jul 21 18:40 archivo.txt~
-rw-r--r-- 1 lm lm 12 Jul 21 19:07 archivo.txt.~1~
-rw-r--r-- 1 lm lm 18 Jul 21 19:07 archivo.txt.~2~

 

6.- Forzar la copia

Cuando sea necesario realizar la copia de un archivo sin importar si ya existe otro archivo con el mismo nombre y se desea sobre escribir sin recibir una consulta o un mensaje de advertencia se puede utilizar el parámetro -f para forzar la copia.

cp -f archivo.txt ./respaldo/

 

7.- Recibir notificación de la copia

Cuando es necesario saber que ocurre con la copia puedes utilizar el parámetro -v con el que recibirás en pantalla un mensaje por cada archivo que se copie o en caso de algún error igual tendrás un mensaje para saber en todo momento que ocurrió. Aquí algunos ejemplos:

$ cp -v archivo.txt archivo-nuevo.txt
‘archivo.txt’ -> ‘archivo-nuevo.txt’
$ cp --backup=numbered -v archivo.txt ./respaldo/
‘archivo.txt’ -> ‘./respaldo/archivo.txt’ (backup: ‘./respaldo/archivo.txt.~3~’)

En el primer ejemplo puedes ver que se indica que «archivo.txt» fue copiado en el archivo con nombre «archivo-nuevo.txt». En el segundo ejemplo puedes ver que se trata de una copia de «archivo.txt» al directorio «respaldo» pero además se realizó un respaldo del archivo con el nombre «archivo.txt.~3~» en el mismo directorio.

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 *


*