cp (Unix)

De Wikipedia, la enciclopedia libre

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]

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.

Modo de operación[editar]

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.

Modo de uso[editar]

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[editar]

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.

Ejemplos[editar]

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

Enlaces externos[editar]

Véase también[editar]

Referencias[editar]