Una de las tareas frecuentes que ejecutamos en entornos Linux, independiente de la distro usada, es copiar archivos ya sea por temas de respaldo o por tener una nueva organización de la información. Aunque podemos intercambiar información entre diferentes sistemas, lo cierto es que a veces perdemos incluso más tiempo copiando de forma duplicada nuestra información.
En muchas ocasiones no encontramos la información que necesitamos en nuestro dispositivo ya sea por desorganización o por un gran volumen de contenido. Si además lo que nos interesa queremos archivarlo en diferentes lugares, la tarea puede llegar a complicarse. Es por eso que en este tutorial hablaremos de la función de copiar archivos en Linux con tan sólo usar un comando y una línea de instrucción en diferentes directorios.
1. Función copiar archivo en Ubuntu Linux
Cuando copiamos un archivo sabemos que el parámetro que usamos es cp (Copy-Copiar) e indicamos la ruta de destino, por ejemplo, en este caso tenemos una imagen llamada Solvetic.png en el escritorio y la deseamos copiar en una carpeta llamada Pruebas, usaremos la siguiente sintaxis:
cp “Origen” “Destino”
Podemos ver que de una forma sencilla copiamos archivos en Linux, en este caso en Ubuntu 16. Pero, ¿qué sucede si deseamos copiar ese mismo archivo a más de un destino en Ubuntu 16 o en cualquier distro? Aunque lo podemos hacer de forma manual se convierte en una tarea tediosa, supongamos que deseamos copiar ese archivo a las carpetas Pruebas y Test, deberíamos ingresar manualmente cada línea:
Este proceso, aparte de ser repetitivo, tomara más tiempo de lo requerido. En este tutorial analizaremos cómo copiar un archivo a diferentes directorios en una sola línea en Linux.
2. Copiar un archivo a varias carpetas usando comando echo en Linux
Para ejecutar esta tarea de forma más eficaz usaremos el comando echo con algunos parámetros adicionales. La sintaxis general es:
echo destino1 destino2 etc | xargs -n 1 cp archivo a copiar
La descripción de esta línea es la siguiente:
- El comando echo es el encargado de escribir en la pantalla de Linux y en este caso anteponemos la barra vertical | para indicar que tome los valores de xargs.
- El parámetro xargs se encarga de copiar usando el comando cp según la cantidad de destinos agregados.
- El parámetro –n 1 indica que solo sea agregado uno de esos argumentos al comando cp.
En nuestro ejemplo la sintaxis quedara de la siguiente manera:
echo /home/Solvetic/Solvetic /home/Solvetic/Pruebas /home/Solvetic/Escritorio/Test | xargs –n 1 cp /home/Solvetic/Escritorio/Solvetic.png
Si accedemos a alguna de las carpetas de destino veremos el archivo que hemos copiado:
Al usar esta sintaxis, si el archivo que estamos copiando existe en alguna de las carpetas de destino este será reemplazado de manera automática. Si deseamos que el sistema nos indique si deseamos o no reemplazar el archivo usaremos el parámetro –i después de cp. Podemos ver que se pregunta si estamos seguros de reemplazar el archivo de destino.
Otro parámetro que podemos usar es –n el cual impide que de manera automática se sobrescriba el archivo si ya existe en el destino. Esto es útil si los archivos son grandes ya que evitamos que se sobrecargue la red y así afectar el rendimiento del sistema.
Podemos ver con un solo comando como podemos copiar un archivo a distintos destinos de forma automática permitiendo así tener más tiempo libre para otras tareas administrativas. De esta manera podremos tener un mismo archivo en diferentes directorios o carpetas a la vez sin tener que andar abriéndolos. Descubre más sobre ello y aprende cómo copiar y mover carpetas y directorios de archivos en Linux.