Introducción
Esta guía te mostrará cómo copiar archivos y directorios en Linux ejecutando comandos desde la línea de comandos. Además, los comandos que se enumeran a continuación detallan cómo crear copias de seguridad en todo el sistema o filtrar y copiar solo archivos específicos.
Nota: Estos comandos de Linux solo se pueden ejecutar desde una ventana de terminal. Si tu versión de Linux se inicia en una interfaz gráfica de escritorio, abre una ventana de terminal presionando CTRL-ALT-F2 o CTRL-ALT-T.
Usar el comando cp para copiar archivos y directorios en Linux
El comando cp es el método principal para copiar archivos y directorios en Linux. Prácticamente todas las distribuciones de Linux pueden usar cp. El formato básico del comando es:
cp [opción_adicional] archivo_origen archivo_destino
Por ejemplo:
cp mi_archivo.txt mi_archivo2.txt
Este comando de Linux crea una copia del archivo mi_archivo.txt y renombra el nuevo archivo como mi_archivo2.txt.
De forma predeterminada, el comando cp se ejecuta en el mismo directorio en el que estás trabajando. Sin embargo, el mismo archivo no puede existir dos veces en el mismo directorio. Deberás cambiar el nombre del archivo de destino para copiarlo en la misma ubicación. Algunos usuarios agregarán _old, algunos agregarán un número e incluso algunos cambiarán la extensión de tres letras (por ejemplo, .bak en lugar de .txt).
Puede que no recibas una advertencia antes de que Linux sobrescriba tu archivo, así que ten cuidado o consulta a continuación la opción -i.
Opciones adicionales
Se pueden utilizar opciones adicionales en combinación con el comando cp:
Opción | Descripción |
---|---|
-v | muestra el progreso de los archivos copiados |
-p | conserva los mismos atributos, como la fecha de creación y los permisos del archivo |
-f | obliga a la copia eliminando primero un archivo existente |
-i | interactivo, solicita confirmación, muy recomendado |
-R | recursivo, copia todos los archivos y subdirectorios en un directorio |
-u | actualización, copia solo si el origen es más reciente que el destino |
Nota: La opción -p (preserve) obliga al sistema a preservar los siguientes atributos del archivo de origen: hora de modificación, hora de acceso, identificador de usuario (UID), identificador de grupo (GID), banderas de archivo, modo de archivo, listas de control de acceso (ACL) y atributos extendidos (EAs).
¿Cómo copiar un archivo a otro directorio en Linux?
Para copiar un archivo desde el directorio en el que estás trabajando a una ubicación diferente, usa el siguiente comando:
cp mi_archivo.txt /nuevo_directorio
No es necesario cambiar el nombre del archivo a menos que ya exista uno con el mismo nombre en el directorio de destino.
Para especificar una ruta para el archivo de origen:
cp /etc/mi_archivo.txt /nuevo_directorio
Esto te permite copiar sin tener que cambiar de directorio. El comando cp creará el directorio /nuevo_directorio si no existe.
Para cambiar el nombre y copiar un archivo a una ruta diferente:
cp mi_archivo.txt /nuevo_directorio/mi_archivo2.txt
Esta opción es útil para crear copias de seguridad de archivos de configuración o para copiar datos en un dispositivo de almacenamiento.
Copiar varios archivos de un directorio a otro en Linux
Puede que necesites copiar más de un archivo a la vez.
Enumera cada archivo que se copiará antes del directorio de destino:
cp mi_archivo.txt mi_archivo2.txt mi_archivo3.txt /nuevo_directorio
Este ejemplo crea una copia de los tres archivos en la carpeta /nuevo_directorio.
Usa un comodín para especificar todos los archivos que comparten una cadena de caracteres:
cp /imagenes/*.jpg /nuevo_directorio
Esto buscará todos los archivos con la extensión .jpg en el directorio /imagenes y los copiará en la carpeta /nuevo_directorio.
Para copiar una carpeta completa y sus subdirectorios y archivos, usa la opción -R:
cp -R /documentos /nuevo_directorio
-R significa recursivo, lo que significa “todo en esa ubicación”. Esto copiará todos los archivos, así como todos los directorios, en la carpeta /nuevo_directorio.
Copiar usando el comando rsync
El comando rsync en Linux se utiliza para sincronizar o transferir datos entre dos ubicaciones. El uso es similar a cp, pero hay algunas diferencias clave que debes tener en cuenta.
Para copiar un solo archivo, ingresa lo siguiente en una terminal:
rsync -a mi_archivo.txt /nuevo_directorio/mi_archivo_backup.txt
- La opción -a significa “todo” y se incluye en los comandos rsync, lo que preserva subdirectorios, enlaces simbólicos y otros metadatos.
- Reemplaza el archivo mi_archivo.txt en el directorio de trabajo.
- Reemplaza /nuevo_directorio/ con el destino.
- El uso de mi_archivo_backup.txt como destino indica que el archivo se renombrará durante la copia.
Para copiar un directorio con rsync, ingresa lo siguiente:
rsync -a /etc/docker/ /home/respaldo/docker/
Esto copia el contenido del directorio /etc/docker/ a /home/respaldo/docker/. Asegúrate de mantener las barras. Omitir la barra diagonal en el directorio de origen copiará el contenido en un subdirectorio.
Para omitir archivos que se copiarán, consulta nuestra guía sobre cómo excluir archivos y directorios en la transferencia de datos usando el comando rsync.
Otras opciones
El comando ls es un compañero útil del comando cp en Linux.
Para listar el contenido de un directorio, ingresa el comando:
ls /directorio
El ejemplo anterior muestra todos los archivos en /directorio. Usa este comando después de copiar para verificar que los archivos se hayan copiado correctamente.
Para cambiar de directorio, usa cd y el nombre del directorio. Por ejemplo:
cd /otro_directorio
El indicador de comando cambiará para mostrar que has cambiado de directorio.
Conclusión
Ahora entiendes cómo copiar archivos en Linux. El comando cp es una herramienta versátil y poderosa para administrar y hacer copias de seguridad de archivos.