cp es un comando de la familia de los Sistemas Operativos Unix que permite copiar archivos y directorios. El comando posee tres modos de operación, indicados según su invocación, lo cual posibilita copiar un archivo en otro, uno o más archivos a un directorio, o bien un directorio en otro.[1]
Datos rápidos Información general, Tipo de programa ...
Cerrar
Es muy importante aclarar que existen variaciones del comando cp entre los Sistemas Operativos de la familia Unix, básicamente con la adición de nuevos parámetros. Aun así respetan el estándar POSIX, lo cual garantiza una compatibilidad básica entre todos ellos.
El comando cp posee tres modos de operar, los cuales se deducen según los argumentos pasados en su invocación. Esto puede ser cuando se le indica a cp lo siguiente:
- Dos archivos: el comando copia el contenido del primer archivo al segundo, creando este último si fuere necesario.
- N archivos seguidos de un directorio: cp copia los N archivos en el directorio indicado, creándolos si fuera necesario.
- Dos directorios: el comando copia todos los archivos y subdirectorios del primer directorio al segundo. Este modo requiere del parámetro r. Si el directorio usado como destino existe el primer directorio es copiado dentro del mismo, sino es creado.
La invocación del comando tiene el siguiente formato según la versión POSIX:
cp [PARÁMETROS] ORIGEN... DESTINO
En caso de tratarse que ORIGEN sea uno o varios archivos su invocación consiste en:
cp [-fip] ORIGEN.. DESTINO
Por otro lado en caso de que ORIGEN sea un directorio, obligatoriamente debe indicarse el uso recursivo (-r o -R) y se habilitan la utilización de determinados parámetros:[2]
cp -r|R [-H |-P|-L] [-fip] ORIGEN DESTINO
A continuación se detallan los parámetros:
- -f
- Si el destino no puede ser escrito, procede a eliminarlo. Esto se realiza previo a que cp comience a operar.
- -p
- Se incluyen los atributos de ORIGEN en DESTINO. Esto se refiere a la fecha de modificación, fecha de acceso, ID de usuario y grupo, permisos, etc.
- -i
- Consulta al usuario si sobrescribe o no el Destino en caso de que este exista.
- -R, -r
- Copia recursivamente los directorios.
- -H
- Si ORIGEN es un enlace simbólico opera con lo apuntado.
- -L
- Ordena a cp a seguir los enlaces simbólicos dentro de ORIGEN, para que en DESTINO se copie lo apuntado, y no el propio enlace.
- -P
- No se siguen los enlaces simbólicos dentro de ORIGEN, y por ende en DESTINO se copia el mismo enlace.
Parámetros existentes en la versión GNU Coreutils
Se listan a continuación alguno de los parámetros de la versión de cp presente en los Sistemas Operativos GNU/Linux:
- -a, --archive
- Equivalente a -dR --preserve=all
- -b, --backup[=MODO]
- Realiza una copia de seguridad (backup) por cada archivo existente en DESTINO
- MODO:
- 'none', 'off'
- Nunca hacer backup.
- 'numbered', 't'
- Hacer backups numerados.
- 'existing', 'nil'
- Hacer backups numerados de aquellos archivos que lo posean, y simple backup de los otros.
- 'simple', 'never'
- Hacer backup simples.
- -d
- equivalente a --no-dereference --preserve=links
- --force
- Equivalente al -f (POSIX)
- --interactive
- Equivalente al -i (POSIX)
- --dereference
- Equivalente al -L (POSIX)
- -n, --no-clobber
- No sobrescribir un archivo existente. El parámetro -i queda sin efecto.
- --no-dereference
- Equivalente al -P (POSIX)
- -p, --preserve[=LISTA DE ATRIBUTOS]
- Equivalente a -p (POSIX). Si no se indican atributos la opción default es: mode, ownership, timestamps.
- LISTA DE ATRIBUTOS:
- 'mode'
- preserva los bits de modo y las listas de control de acceso.
- 'ownership'
- conserva al usuario y grupo dueños.
- 'timestamps'
- conserva los tiempos de acceso y modificación.
- 'links'
- preserva en los archivos de destino cualquier enlace que exista entre los archivos de origen.
- 'context'
- conserva el contexto de seguridad de SELinux
- 'xattr'
- conserva los atributos extendidos.
- 'all'
- conserva todos los atributos.
- --no-preserve[=LISTA DE ATRIBUTOS]
- No preserva los atributos. Su uso es idéntico a --preserve.
- --recursive
- Equivalente a -r o -R (POSIX)
- -S, --suffix=SUFFIX
- Define el sufijo usado en los backups (-b)
- -t, --target-directory=DIRECTORIO
- Copiar todos los archivos definidos en ORIGEN dentro de DIRECTORIO
- -T, --no-target-directory
- Considera a DESTINO como un archivo
- -u, --update
- Copia solamente cuando ORIGEN es más nuevo que DESTINO, o bien este último no posee definido tiempo de modificación.
Creando una copia de un archivo en el mismo directorio::
cp archivo.txt archivo.bkp.txt
Copiar dos archivos en un directorio (misFotos/vacaciones):
cp foto1.jpg foto2.jpg misFotos/vacaciones
Copiar múltiples archivos usando comodines:
cp *.jpg misFotos/vacaciones
Copiar un directorio, incluyendo sus archivos y subdirectorios, a otro directorio:
cp -R /home/usuario/carpeta /home/usuario/carpetaDestino