Ir al contenido principal

Copiando con RSync mostrando progreso en Linux

Hacer copias de archivos y/o directorios enteros es común en cualquier sistema operativo. En Linux existen diferentes formas de hacer esta tarea.

Vamos a ver una de esas formas utilizando un comando muy conocido, pero con algunas opciones que nos ayudaran a tener mejor control y rendimiento al copiar.

Aclaración

Una de las situaciones que como usuario de linux se llega a enfrentar, es que cuando se ejecuta algún comando, pocas veces se ve por pantalla el progreso o avance que el comando esta realizando. En el caso de rsync, si no se le especifica esto, no muestra el avance de la copia, por lo que es necesario indicarle que muestre el progreso.

Una buena forma de conocer todos los parámetros de un comando es consultando su manual de usuario. Normalmente se puede hacer ejecutando el comando man.

$ man rsync

Lo anterior mostrara una ventana con la información del comando y sus parámetros, y en algunos casos ejemplos prácticos.

Copiando (Sincronizando)

Es muy común utilizar rsync para la copia de directorios mas que un archivo en particular. Para casos de archivos, pudiera ser cuando estos tienen un peso grande en Megas.

Cuando son directorios donde se tienen archivos importantes, o archivos de algún sistema o servicio, los cuales requieren tener ciertos permisos y se desea que estos mismos permisos se hereden al copiar se ejecuta con los siguientes parámetros

$ rsync --progress -grov /ruta/del/directorio/origen/ /ruta/del/directorio/destino/

Lo anterior realiza la copia de un directorio completo hacia el directorio destino, respetando tanto los permisos lectura, escritura y ejecución, así como los permisos de usuario y grupo de los archivos.

Los parámetros usados son:

--progress: El cual se le indica a rsync que por cada archivo que sincronice debe mostrar un avance de la copia. El cual muestra tanto el tamaño del archivo en bytes, como el porcentaje de la copia.
-grov: hace referencia a diferentes opciones, estas son:
  • g: Que respete los permisos del grupo dueño del/los archivo(s)
  • r: Que la copia se realice de forma recursiva, en caso de existir directorios y archivos internos en el origen
  • o: Que respete los permisos del dueño (owner) de los archivos/directorios a copiar
  • v: Que muestre el verbose, es decir, cada directorio y/o archivo que va procesando

Si deseamos hacer la copia de algún archivo grande (Megas o Gigas) y queremos ver como va la copia, seria muy similar al comando anterior, solo que solo se indica el archivo en cuestión y el destino. Ejemplo:

$ rsync --progress -av /ruta/de/archivo.iso /ruta/directorio/destino/

Lo anterior debe mostrar el progreso de la copia del archivo, como se puede confirmar en la siguiente imagen:


Una vez finalizada la copia, debería de mostrar el siguiente resumen:


Copias hacia otro equipo o servidor

Una de las bondades que brinda rsync, aparte de la copia con sus permisos, también se puede hacer lo mismo pero hacia un equipo o servidor remoto. Para esto es necesario ejecutar el comando de la siguiente forma:

$ rsync --progress -avh -e ssh /ruta/de/archivo.iso usuario@192.168.1.220:/tmp

Lo anterior estaría copiando el archivo hacia un servidor externo, indicando el destino (después de los dos puntos ":" en el servidor remoto).

En el ejemplo anterior se utilizan 2 parámetros adicionales:

  • h: Le indica a rsync que muestre la transferencia en un formato mas entendible (para humanos). Ya había mencionado que la vista se muestra en bytes al hacer la copia. Con este parámetro forza a mostrar en Mega y/o Gigas, según sea el caso.
  • e: Indica la shell a utilizar en la copia remota, en este caso utiliza SSH para el tema de la transferencia segura.
El comando anterior debería mostrar algo como la siguiente imagen:


Conclusión

Entiendo que pueden existir otras forma de hacer copias, algunas mas agradables en terminos de vista. Pero cuando se trabaja con servidores, donde lo que se tiene es la linea de comandos, esta puede ser una forma de hacerlo.

Esperando que pueda ser de utilidad para mas de alguno. Nos leemos en otra entrada. Saludos



Comentarios

Entradas más populares de este blog

Como montar particiones LVM en Linux

Como están lectores, reportandome después de varios meses fuera. Hace un par de días vi un howto que me gusto y quiero compartir. Nota: lo siguiente es una traducción, el original lo pueden ver el siguiente link: How to mount an LVM partition on Linux Introducción LVM es una herramienta de administración de volúmenes lógicos (particiones) la cual te permite administrar el espacio de disco usando la connotación de volúmenes lógicos y grupo de volúmenes. El mayor beneficio de usar LVM sobre las particiones clásicas es la flexibilidad en la asignación de almacenamiento para usuarios y aplicaciones sin verse limitado por el tamaño de los discos individuales. En LVM, el almacenamiento físico, en el cual se crean los volúmenes lógicos, son particiones tradicionales (/dev/sda1, /dev/sda2). Estas particiones deben ser marcadas como "volúmenes físicos" y etiquetadas como "Linux LVM", esto para ser usadas en LVM. Como no montar Unas vez que las particiones h

Configurando interfaces de red virtuales en Linux

Estimados, de nuevo en acción retomando mi rumbo. Les traigo un traducción de un howto que me llamo la atención y creo que es bueno tener información en castellano. Así que aquí esta: La entrada original la pueden tener aqui (si te gusta leer en ingles), comencemos. Introducción ¿Sabia que puedes asignar mas de una dirección IP a una única interfaz de red? Esta técnica es muy utilizada, por ejemplo cuando se trabaja con Apache y host virtuales, esto para permitir accesar al mismo servicio pero usando dos direcciones IP. Interfaz de red virtual temporal  El proceso de crear interfaces de red virtual en +GNU/Linux  es muy simple. Esto involucra una ejecución simple del comando ifconfig ifconfig eth0:0 123.123.22.22 El comando anterior creara una nueva interfaz de red virtual basada en la interfaz física de eth0 . Lo condición mas importante para crear una interfaz de red virtual es la interfaz física de red, como en nuestro ejemplo, eth0 debe existir. El ejemplo comple

Como leer/visualizar archivos utmp, wtmp y btmp en Linux

Lectores, les paso este "Como" de linux, algo que debe ser usado por cualquier sysadmin de Linux. Esperando aportar conocimiento, aqui les dejo. Introducción. En sistemas operativos Linux/Unix todo es registrado en algun lado (los conocidos logs). La mayoria de registros del sistema se almacenan en el directorio /var/log . El directorio contiene registros relacionados a distintos servicios y/o aplicaciones. En este directorio tenemos algunos archivos como utmp , wtmp y btmp . Estos archivos contienen todo el detalle de registro de inicio (login) y termino (logout) de sesiones de usuarios ya sea local, sistemas remoto, como estado en el sistema, tiempo en linea, etc. Informacion sobre los archivos utmp : te mostrara informacion completa del acceso de usuarios, la terminal que usa, termino de sesion, eventos del sistema y el estado actual del mismo, etc. wtmp : contiene el historio del archivo utmp btmp : registros solo intentos fallidos de sesion. Como no