Cómo copiar archivos y directorios en Linux
Copiar archivos y directorios es una de las tareas más comunes que realizará cuando trabaje en la línea de comandos. En Linux, hay varios comandos para copiar archivos, siendo cp y rsync los más populares.
Es una práctica común utilizar el comando cp al copiar archivos y el comando rsync al copiar directorios.
Antes de que empieces
Para poder copiar archivos y directorios, debe tener al menos permisos de lectura en el archivo de origen y permiso de escritura en el directorio de destino.
Copiando archivos con el comando cp
El comando cp es una utilidad de línea de comandos para copiar archivos y directorios en sistemas Linux de una ubicación a otra en la misma máquina.
El caso de uso más simple es copiar un archivo en el directorio de trabajo actual. Por ejemplo, para copiar un archivo nombrado file.txt en el directorio actual, file_backup.txt ejecute el siguiente comando:
cp file.txt file_backup.txt
Si el archivo de destino existe, se sobrescribirá. Para solicitar confirmación utilice la opción -i.
cp -i file.txt file_backup.txt
Cuando se usa el comando cp para copiar un archivo, el nuevo archivo será propiedad del usuario que ejecute el comando. Utilice la opción -p para conservar el modo de archivo, la propiedad y las marcas de tiempo:
cp -p file.txt file_backup.txt
Otra opción que puede ser útil es -v. Al usar esta opción, el comando imprimirá lo que se está haciendo:
cp -v file.txt file_backup.txt
'file.txt' -> 'file_backup.txt'
Copia un archivo a otro directorio
Para copiar un archivo a otro directorio, debe especificar la ruta absoluta o relativa al directorio de destino. En el siguiente ejemplo estamos copiando el archivo file.txt al directorio /backup
cp file.txt /backup
Al especificar solo el nombre del directorio como destino, el archivo copiado tendrá el mismo nombre que el archivo original.
Si desea copiar el archivo con un nombre diferente, debe especificar el nombre de archivo deseado:
cp file.txt /backup/new_file.txt
El comando anterior copiará el archivo en el directorio especificado como new_file.txt.
Copiar varios archivos
También es posible copiar varios archivos a la vez especificando los nombres de los archivos seguidos por el directorio de destino:
cp file.txt file1.txt file2.txt directory
Al copiar varios archivos, el destino debe ser un directorio.
El comando cp también le permite utilizar la coincidencia de patrones. Por ejemplo, para copiar todos los archivos png del directorio actual al directorio /backup usaría:
cp *.png /backup
Copiando directorios con el comando cp
Para copiar un directorio, incluyendo todos sus archivos y subdirectorios, use la opción -R. En el siguiente ejemplo estamos copiando el directorio ~/Pictures a ~/Pictures_backup:
cp -R Pictures Pictures_backup
El comando anterior creará un directorio de destino y copiará recursivamente todos los archivos y subdirectorios desde el origen al directorio de destino.
Las opciones utilizadas al copiar archivos también se pueden usar al copiar el directorio. La principal diferencia es que al copiar directorios debe utilizar la opción -R switch.
Copiando archivos y directorios con el comando rsync
Rsync es una utilidad de línea de comandos rápida y versátil que sincroniza archivos y directorios entre dos ubicaciones. Se puede utilizar para copiar archivos en ubicaciones locales y remotas.
Rsync proporciona una serie de opciones que controlan cada aspecto de su comportamiento. La opción más utilizada es -a la de copiar directorios de forma recursiva, transferir dispositivos especiales y de bloques, preservar enlaces simbólicos, tiempos de modificación, grupos, propiedad y permisos.
Para copiar un solo archivo de una ubicación a otra, debería usar el siguiente comando:
rsync -a file.txt file_backup.txt
Si el archivo de destino existe, rsync lo sobrescribirá.
Puede usar el mismo comando que el de arriba para copiar un directorio con rsync:
rsync -a /var/www/public_html/ /var/www/public_html_backup/
Rsync amenaza los directorios de origen que terminan con una barra inclinada /
diferente. Si agrega una barra diagonal al directorio de origen, solo copiará el contenido del directorio al directorio de destino. Cuando se omite la barra diagonal final, rsync copiará el directorio de origen dentro del directorio de destino.
Notas Finales
En esta guía, le mostramos cómo copiar archivos y directorios en sistemas basados en Linux y Unix utilizando las utilidades cp y rsync.