Copiar directorios en Linux es una gran parte de la rutina de cada administrador de sistemas.
Si ha estado trabajando con Linux durante bastante tiempo, sabe lo importante que es mantener sus carpetas bien estructuradas.
En algunos casos, es posible que deba copiar algunos directorios en su sistema para renovar la estructura de su sistema de archivos principal.
En este tutorial, veremos cómo puede copiar directorios y carpetas en Linux fácilmente. usando el comando cp.
Copiar directorios en Linux
Para copiar un directorio en Linux, debe ejecutar el comando "cp" con la opción "-R" para recursivo y especificar los directorios de origen y destino que se copiarán.
$ cp -R <source_folder> <destination_folder>
Como ejemplo, supongamos que desea copiar el directorio "/etc" en una carpeta de respaldo llamada "/etc_backup".
La carpeta “/etc_backup” también se encuentra en la raíz de su sistema de archivos.
Para copiar el directorio “/etc” a esta carpeta de respaldo, debe ejecutar el siguiente comando
$ cp -R /etc /etc_backup
Al ejecutar este comando, la carpeta “/etc” se copiará en “/etc_backup”, dando como resultado la siguiente carpeta.
Impresionante, has copiado con éxito una carpeta en otra carpeta en Linux.
Pero, ¿y si quisieras copiar el contenido del directorio, recursivamente, usando el comando cp?
Copiar contenido de directorio de forma recursiva en Linux
Para copiar el contenido de un directorio de forma recursiva, debe usar el comando "cp" con la opción "-R" y especificar el directorio de origen seguido de un carácter comodín.
$ cp -R <source_folder>/* <destination_folder>
Dado nuestro ejemplo anterior, digamos que queremos copiar el contenido del directorio “/etc” en la carpeta “/etc_backup”.
Para lograr eso, escribiríamos el siguiente comando
$ cp -R /etc/* /etc_backup
Al enumerar el contenido de la carpeta de copia de seguridad, se dará cuenta de que la carpeta en sí no se copió, pero sí su contenido.
$ ls -l /etc_backup
Genial, has copiado el contenido del directorio "/etc" directamente en una carpeta de respaldo!
Copiar varios directorios con cp
Para copiar varios directorios en Linux, debe usar el comando "cp" y enumerar los diferentes directorios que se copiarán, así como la carpeta de destino.
$ cp -R <source_folder_1> <source_folder_2> ... <source_folder_n> <destination_folder>
Como ejemplo, digamos que queremos copiar el directorio “/etc”, así como todos los directorios de inicio ubicados en el directorio “/home”.
Para lograr eso, ejecutaríamos el siguiente comando
$ cp -R /etc/* /home/* /backup_folder
Enhorabuena, ha copiado correctamente varios directorios usando el comando cp en Linux!
Copiar directorios a hosts remotos
En algunos casos, es posible que desee copiar un directorio para mantener una copia de seguridad en un servidor de copia de seguridad.
No hace falta decir que su servidor de respaldo es localmente de forma remota:tiene que copiar su directorio a través de la red.
Copiando usando rsync
Para copiar directorios a ubicaciones remotas, debe usar el comando rsync, especificar la carpeta de origen y el destino remoto en el que se copiará.
Asegúrese de incluir la opción "-r" para "recursivo" y la opción "-a" para "todos" (de lo contrario, se omitirán los archivos no regulares)
$ rsync -ar <source_folder> <destination_user>@<destination_host>:<path>
Además, si la utilidad "rsync" no está instalada en su servidor, asegúrese de instalarla con privilegios sudo.
$ sudo apt-get install rsync
$ sudo yum install rsync
Como ejemplo, digamos que necesitamos copiar la carpeta “/etc” a un servidor de respaldo ubicado en 192.168.178.35/24.
Queremos copiar el directorio al “/etc_backup” del servidor remoto, con el nombre de usuario “devconnected”.
Para lograr eso, ejecutaríamos el siguiente comando
$ rsync -ar /etc [email protected]:/etc_backup
Nota:ya escribimos una guía sobre la transferencia de archivos y carpetas a través de la red, si necesita una guía extensa al respecto.
De manera similar, puede optar por copiar el contenido del directorio “/etc/ en lugar del directorio en sí mismo agregando un carácter comodín después del directorio que se va a copiar.
$ rsync -ar /etc/* [email protected]:/etc_backup/
Finalmente, si desea introducir la fecha actual mientras realiza una copia de seguridad del directorio, puede utilizar la sustitución de parámetros de Bash.
$ rsync -ar /etc/* [email protected]:/etc_backup/etc_$(date "+%F")
Nota :si está buscando un tutorial sobre cómo configurar fechas en Linux, tenemos una guía al respecto en el sitio web.
Copiando usando scp
Para copiar el directorio en Linux a una ubicación remota, puede ejecutar el comando "scp" con la opción "-r" para recursivo seguido del directorio que se copiará y la carpeta de destino.
$ scp -r <source_folder> <destination_user>@<destination_host>:<path>
Como ejemplo, digamos que queremos copiar el directorio “/etc” a un servidor de respaldo ubicado en 192.168.178.35 en la carpeta “/etc_backup”.
Para lograr eso, ejecutaría el siguiente comando
$ scp -r /etc [email protected]:/etc_backup/
Felicitaciones, copió exitosamente un directorio completo usando el comando scp.
De manera muy similar al comando rsync, puede elegir usar la sustitución de parámetros de Bash para copiar su directorio a un directorio personalizado en su servidor.
$ scp -r /etc [email protected]:/etc_backup/etc_$(date "+%F")
Conclusión
En este tutorial, aprendió cómo puede fácilmente copiar directorios en Linux , ya sea que elija hacerlo de forma local o remota.
La mayoría de las veces, la copia de directorios se realiza para tener copias de seguridad de carpetas críticas en su sistema :a saber, /etc, /home o registros de Linux.
Si está interesado en Administración del sistema Linux , tenemos una sección completa dedicada a él en el sitio web, ¡así que asegúrese de echarle un vistazo!