En informática , cpes un comando en varios sistemas operativos Unix y similares a Unix para copiar archivos y directorios . El comando tiene tres modos principales de operación, expresados por los tipos de argumentos presentados al programa para copiar un archivo a otro archivo, uno o más archivos a un directorio o para copiar directorios completos a otro directorio. [1]
La utilidad acepta además varias opciones de línea de comandos para detallar las operaciones realizadas. Las dos especificaciones principales son POSIX cp y GNU cp . GNU cp tiene muchas opciones adicionales a la versión POSIX. [2]
El comando también está disponible en el shell EFI . [3]
Historia
cp fue parte de la versión 1 de Unix . [4] La versión cpincluida en GNU coreutils fue escrita por Torbjorn Granlund, David MacKenzie y Jim Meyering. [5]
Modos de funcionamiento
cp tiene tres modos principales de funcionamiento. Estos modos se infieren del tipo y la cantidad de argumentos que se presentan al programa al invocarlo.
- Cuando el programa tiene dos argumentos de nombres de rutas de archivos, el programa copia el contenido del primer archivo al segundo archivo, creando el segundo archivo si es necesario.
- Cuando el programa tiene uno o más argumentos de nombres de rutas de archivos y a continuación de estos un argumento de una ruta a un directorio, entonces el programa copia cada archivo de origen al directorio de destino, creando cualquier archivo que aún no exista.
- Cuando los argumentos del programa son los nombres de las rutas de dos directorios, cp copia todos los archivos del directorio de origen al directorio de destino, creando los archivos o directorios necesarios. Este modo de operación requiere una opción adicional, normalmente r , para indicar la copia recursiva de directorios. Si el directorio de destino ya existe, el origen se copia en el destino, mientras que se crea un nuevo directorio si el destino no existe.
Uso
Copiar un archivo a otro archivo:
cp [-fHip][--] archivo de origen archivo de destino
Copiar archivo(s) a un directorio
cp [-fHip] [--] archivo de origen... directorio de destino
Copiar un directorio a un directorio (se debe utilizar -r o -R)
cp -r|-R [-fHip] [--] directoriodeorigen... directoriodedestino
Banderas de opciones
-f(forzar): especifica la eliminación del archivo de destino si no se puede abrir para operaciones de escritura. La eliminación precede a cualquier copia realizada por elcpcomando.-H(desreferenciar) – hace que elcpcomando siga enlaces simbólicos (symlinks) para que el destino tenga el archivo de destino en lugar de un enlace simbólico al destino.-i(interactivo) – solicita el nombre de un archivo que se va a sobrescribir. Esto ocurre si el parámetro TargetDirectory o TargetFile contiene un archivo con el mismo nombre que un archivo especificado en el parámetro SourceFile o SourceDirectory . Si se ingresay(o el equivalente de la configuración regional dey), elcpcomando continúa. Cualquier otra respuesta evita que elcpcomando sobrescriba el archivo.-n(sin manipulación ): evita sobrescribir accidentalmente cualquier archivo-p(preservar) – la-pbandera preserva las siguientes características de cada ruta de origen en el destino correspondiente: la hora de la última modificación de los datos y la hora del último acceso , la propiedad (solo si tiene permisos para hacer esto) y los bits de permiso del archivo.-Ro-r(recursivo) – copiar directorios recursivamente
Ejemplos
Creando una copia de un archivo en el directorio actual:
cp programa.c programa.bak
Esto copia prog.c a prog.bak. Si el archivo prog.bak aún no existe, el comando cp lo crea. Si existe, el comando cp reemplaza su contenido con el contenido del archivo prog.c.
Copiar dos archivos del directorio actual a otro directorio:
cp jones smith /inicio/nick/clientes
Esto copia los archivos jones a /home/nick/clients/jones y smith a /home/nick/clients/smith.
Copiar un archivo a un nuevo archivo y conservar la fecha de modificación, la hora y la lista de control de acceso asociadas con el archivo de origen:
cp -p smith smith.jr
Esto copia el archivo smith al archivo smith.jr. En lugar de crear el archivo con la fecha y hora actuales, el sistema le asigna al archivo smith.jr la misma fecha y hora que al archivo smith. El archivo smith.jr también hereda la protección de control de acceso del archivo smith.
Copiar un directorio, incluidos todos sus archivos y subdirectorios, a otro directorio:
cp -R /home/nick/clientes /home/nick/clientes
Esto copia el directorio clientes , incluidos todos sus archivos, subdirectorios y los archivos en esos subdirectorios, al directorio clientes/clientes . Algunos sistemas Unix se comportan de manera diferente en este modo, dependiendo de la terminación de las rutas de directorio. Al usarlo cp -R /home/nick/clients/ /home/nick/customersen un sistema GNU se comporta como se espera; sin embargo, en un sistema BSD, copia todo el contenido del directorio "clientes", en lugar del directorio clientes en sí. Lo mismo sucede en los sistemas GNU y BSD si la ruta del directorio fuente termina en . o .. (con o sin barra diagonal final).
La copia de un archivo a un archivo existente se realiza abriendo el archivo existente en modo de actualización, preservando así el inodo del archivo, lo que requiere acceso de escritura y da como resultado que el archivo de destino conserve los permisos que tenía originalmente.
Comandos Unix relacionados
- cpio – copia una estructura de directorio completa de un lugar a otro
- tar – crea un archivo de archivos
- enlace – llamada del sistema para crear un enlace a un archivo o directorio
- ln – crea un enlace a un archivo o directorio
- mv – mover un archivo o directorio
- rm – eliminar un archivo o directorio
- unlink – llamada del sistema para eliminar un archivo o directorio
- chmod – cambia el modo (también conocido como permisos) en un archivo o directorio
- chown – cambiar la propiedad de un archivo o directorio
- chgrp – cambiar el grupo en un archivo o directorio
- uucp – copia de unix a unix
- scp – copia segura por SSH
- progreso, [6] [7] Herramienta de Linux para mostrar el progreso de cp, mv, dd.
Véase también
Referencias
- ^ "Cp(1) - Página del manual de Linux".
- ^ "GNU Coreutils: invocación de cp". GNU .
- ^ "EFI Shells and Scripting" (Conchas y secuencias de comandos EFI). Intel . Consultado el 25 de septiembre de 2013 .
- ^ McIlroy, MD (1987). Un lector de Unix para investigación: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
- ^ "Cp(1): Copiar archivos/directorios - Página del manual de Linux".
- ^ "Progress(1) - Página del manual de Linux".
- ^ "Progreso - Visualizador de progreso de Coreutils". GitHub . 14 de noviembre de 2021.
Enlaces externos
- – Referencia de shell y utilidades, la especificación única de UNIX , versión 4 de The Open Group
- – Manual de comandos generales de FreeBSD
- – Manual de comandos generales de NetBSD
- – Manual de comandos generales de OpenBSD
- – Manual de referencia de comandos de usuario de Solaris 11.4
- – Manual de comandos de usuario de Linux
- – Manual del programador de Plan 9 , volumen 1