Opciones del comando cp y cómo sobrescribir sin confirmación | yes y barra invertida

cp pregunta si quieres sobrescribir cada archivo cuando copias varios, y el trabajo se detiene. El comando cp, abreviatura de Copy, copia archivos y directorios. Este artículo repasa el uso básico, las opciones y dos formas de sobrescribir todo sin confirmación.
El comando cp sobrescribe sin preguntar un archivo del mismo nombre en el destino. Para evitarlo está definido [alias cp='cp -i'], de modo que pide confirmación antes de sobrescribir.
✅ Uso básico
La sintaxis básica es la siguiente.
cp -[opciones] <origen: archivo o directorio> <destino: ruta o archivo o directorio (ruta)>Escribe primero lo que quieres copiar y después el destino o el nuevo nombre.

# Copiar un archivo a otro archivo
cp file1 file2
# Copiar un archivo dentro de un directorio
cp file1 dir1/
# Copiar dos archivos dentro de un directorio
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
Para copiar un directorio hace falta la opción -r, -R o -a.
- -r/-R : copia recursiva de un directorio y su contenido
- -a : copia recursiva que conserva los atributos (incluye -r)
✅ Dos formas de sobrescribir todo con cp
Al ejecutar el comando cp aparece la pregunta [overwrite] porque cp tiene definido el alias [cp -i].
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'Con uno o dos archivos no importa, pero al copiar muchos hay que responder por cada uno.
En ese caso, los dos métodos siguientes sobrescriben sin confirmación.
yes | cp -ar /home/ ./El primero consiste en anteponer [yes |], que responde y a cada pregunta y la copia sigue sin detenerse. El segundo consiste en anteponer una barra invertida [\] al comando, lo que omite el alias y ejecuta el cp original.
\cp -ar /home/ ./✅ Opciones del comando cp y simulador
| Opción | Descripción | |
|---|---|---|
| -a | --archiveCopia conservando permisos, propietario, grupo y fechas del archivo original[conserva permisos, propietario, grupo, fechas, etc.] + [-d : copia el enlace simbólico en sí] + [-R : copia directorios de forma recursiva] | |
| -b | Si el destino ya existe, hace una copia de seguridad del archivo antes de copiar | |
| -d | Si el origen es un enlace simbólico, copia el enlace en sí | |
| -f | Si el archivo de destino existe, lo elimina a la fuerza y copia | |
| -i | --interactivePide confirmación al usuario antes de sobrescribiralias cp='cp -i' | |
| -l(minúscula) | Copia como enlace duro | |
| -P | Copia el enlace simbólico tal cual, sin seguirlo | |
| -p | Conserva propietario, grupo, permisos y fechas del original | |
| -r, -R | Copia directorios de forma recursiva (incluye subdirectorios y archivos)La opción -r no es estándar POSIX y puede dar problemas con enlaces simbólicos y archivos de dispositivo. | |
| -s | Copia como enlace simbólico (el origen debe indicarse con ruta absoluta) | |
| -u | No sobrescribe si el archivo de destino es más reciente o igual | |
| -v | Muestra el progreso de la copia (verbose)Muestra un mensaje por cada copia completada | |
| -x | No copia cuando el origen y el destino están en sistemas de archivos distintos. |
🔲 Opción -a: conservar atributos y copiar subdirectorios y archivos
La opción [-a] basta por sí sola para copiar subdirectorios conservando los atributos de los archivos originales. Aun así, algunos scripts y herramientas de automatización exigen [-r] de forma explícita, por lo que a veces se añade [-r] o [-R].
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d : copia el enlace simbólico en sí]+[-R : copia directorios de forma recursiva]+[--preserve=all]
| Elementos incluidos en --preserve=all | Descripción |
|---|---|
| mode | Permisos del archivo (rwx, etc.) |
| ownership | Propietario (user) y grupo (group) |
| timestamps | Marcas de tiempo, como la última modificación |
| links | Número de enlaces duros (mantiene el inode compartido) |
| context | Contexto de seguridad de SELinux |
| xattr | Atributos extendidos (metadatos adicionales guardados con el archivo) |
| all | Forma abreviada que incluye todos los elementos anteriores |
🔲 Opción -u: copiar solo archivos nuevos o modificados
- Copia solo si no hay un archivo del mismo nombre en el destino, o si el origen es más reciente
- Se usa a menudo en copias de seguridad y sincronización
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.