Introducción
Cuando trabaja en sistemas Linux y Unix, copiar archivos y directorios es una de las tareas más comunes que realizará a diario.
cp es una utilidad de línea de comandos para copiar archivos y directorios en sistemas Unix y Linux. En este artículo, explicaremos cómo usar el comando cp.
Cómo usar el comando cp
La sintaxis general del comando cp es la siguiente:
cp [OPTIONS] SOURCE... DESTINATION
El parámetro SOURCE puede tener uno o más archivos o directorios como argumentos, y DESTINATION puede tener un solo archivo o directorio como argumento.
- Cuando los argumentos SOURCE y DESTINATION están presentes, el comando cp copia el primer archivo al segundo. Si el archivo no existe, el comando lo creará.
- Cuando SOURCE tiene varios archivos o directorios como argumentos, el argumento DESTINATION debe ser un directorio. En este caso, los archivos y directorios SOURCE se mueven al directorio DESTINATION.
- Cuando los argumentos SOURCE y DESTINATION son ambos directorios, el comando cp copia el primer directorio en el segundo.
Para copiar archivos y directorios, debe tener al menos permisos de lectura en el archivo de origen y permisos de escritura en el directorio de destino. De lo contrario, obtendrá un error de permiso denegado.
Copiar archivos con el comando cp
El escenario básico de usar cp es una copia de un archivo en el directorio de trabajo actual. Por ejemplo, para hacer una copia file_backup.txt de un archivo llamado file.txt, ejecute el siguiente comando:
cp file file_backup
O:
cp file{,_backup}
Para copiar un archivo a otro directorio, especifique la ruta absoluta o relativa del directorio de destino. Cuando solo se especifica el nombre del directorio como destino, el archivo copiado tendrá el mismo nombre que el archivo original.
En el siguiente ejemplo, estamos copiando el archivo file.txt en el directorio /backup:
cp file.txt /backup
Si desea copiar el archivo con un nombre diferente, debe especificar el nombre de archivo deseado. El siguiente comando copia el archivo al directorio especificado como new_file.txt.
cp file.txt /backup/nuovo_file.txt
De forma predeterminada, si el archivo de destino existe, se sobrescribirá. La opción -n se utiliza para no sobrescribir un archivo existente. Para solicitar confirmación, use la opción -i.
cp -i file.txt file_backup.txt
Si desea copiar el archivo solo si es más reciente que el destino, use la opción -u:
cp -u file.txt file_backup.txt
Cuando copia un archivo, el nuevo archivo será propiedad del usuario que ejecuta el comando. Utilice la opción -p para conservar el modo de archivo, los permisos y las marcas de tiempo:
cp -p file.txt file_backup.txt
Otra opción que puede ser útil es -v, que le dice a cp que imprima una salida detallada:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
Copiar directorios con el comando cp
Para copiar un directorio, incluidos todos sus archivos y subdirectorios, use la opción -R o -r. En el siguiente ejemplo, estamos copiando el directorio de imágenes en Backup_images
cp -R Immagini Immagini_backup
El comando anterior creará un directorio de destino y copiará de forma recursiva todos los archivos y subdirectorios desde el origen al directorio de destino.
Si el directorio de destino ya existe, el directorio de origen y todo su contenido se copiarán en el directorio de destino. Para copiar solo archivos y subdirectorios, pero no directorios de destino, use la opción -T:
cp -RT Immagini Immagini_backup
Otra forma de copiar solo el contenido del directorio, pero no el directorio en sí, es usar el carácter comodín ( * ). La desventaja de la siguiente comando es que no va a copiar archivos y directorios ocultos (los que empiezan con un punto.):
cp -RT Immagini/* Immagini_backup/
Todas las opciones utilizadas en la sección anterior al copiar archivos también se pueden utilizar al copiar directorios. La principal diferencia es que al copiar directorios siempre debes usar la opción -R.
Copie varios archivos y directorios
Para copiar varios archivos y directorios a la vez especificando sus nombres y usando el directorio de destino como último argumento:
cp file.txt dir file1.txt dir1
Al copiar varios archivos, el destino debe ser un directorio.
Conclusión
Copiar archivos y directorios con el comando cp es una tarea sencilla. Para obtener información sobre el comando cp, escriba man cp en la terminal.