Ir al contenido principal

Destacados

Crear nuestra propia distribución Linux openSUSE con KIWI NG

Como bien lo dice su wiki,  KIWI  es una herramienta de línea de comandos que permite construir imágenes de sistemas operativos Linux aplicados para hardware físico, como así también para entornos virtuales. Permite crear una distribución Linux con el mínimo sistema operativo y software necesario para tareas específicas ( JeOS, J ust enough  Operating System ), o bien crear y personalizar una distribución Linux a nuestro propio antojo.

Sincronización de archivos con el comando Rsync

Rsync es una herramienta genial que se encuentra disponible en la mayoría de las distribuciones Linux, Unix y Mac, y que permite realizar copias incrementales y diferenciales de archivos.

Particularmente en la mayoría de los casos solo la he usado para mantener sincronizados y actualizados los archivos de respaldo creados a partir de sus originales en una ubicación diferente, pero es una herramienta muy potente que permite realizar muchísimas otras cosas más avanzadas e interesantes.

Algunos usos prácticos que le he dado a la herramienta son copiar solo los archivos nuevos o modificados entre directorios locales y también entre equipos remotos, además lo he usado para mantener actualizado un mirror local privado generado a partir de un repositorio público de openSUSE. A continuación van los ejemplos de uso práctico.

Usos prácticos

  • Podemos sincronizar los archivos existentes en una carpeta a otra de nuestro equipo mediante el comando rsync de la siguiente manera:
    usuario@testsrv:~> rsync -auv /home/miusuario/nuevos-archivos /home/miusuario/tmp
    
  • Algo que suelo usar mucho a la hora de mantener sincronizados dos directorios es utilizar el argumento --exclude para evitar que se sincronicen los directorios y archivos ocultos, y en ciertas ocasiones para evitar que se incluyan los archivos con una extensión en particular:
    usuario@testsrv:~> rsync -auv --exclude ".*" /home/miusuario/nuevos-archivos /home/miusuario/tmp
    usuario@testsrv:~> rsync -auv --exclude "*.jpg" /home/miusuario/nuevos-archivos /home/miusuario/tmp
    
  • Al argumento --exclude también se le pueden pasar nombres de carpetas y nombres de archivos específicos:
    usuario@testsrv:~> rsync -auv --exclude "archivo.txt" /home/miusuario/nuevos-archivos /home/miusuario/tmp
    usuario@testsrv:~> rsync -auv --exclude "nombre_carpeta" /home/miusuario/nuevos-archivos /home/miusuario/tmp
    
  • Tampoco hay problemas para agregar más de un argumento --exclude al comando rsync como se puede observar a continuación:
    usuario@testsrv:~> rsync -auv --exclude ".*" --exclude "*.jpg" --exclude "archivo.txt" --exclude "nombre_carpeta" /home/miusuario/nuevos-archivos /home/miusuario/tmp
    
  • Podemos sincronizar el contenido de un directorio de origen a un directorio de destino ubicado en un equipo remoto a través del protocolo SSH de la siguiente forma:
    usuario@testsrv:~> rsync -t -e ssh -Pazv /home/miusuario/nuevos-archivos usuario@ip_o_dominio_equipo:/ruta/carpeta/destino
    
    El comando anterior se encargará de hacer algo parecido a lo que hace el comando SCP pero solo copiará/sincronizará al otro equipo aquellos archivos que hayan sido modificados o aquellos que hayan sido agregados recientemente y que aún no existan en el equipo remoto.

    Ahora bien, el comando anterior requerirá introducir la contraseña del usuario remoto cada vez que lo ejecutemos a menos que hayamos configurado una autenticación SSH mediante llaves públicas y privadas como ya hemos visto en éste artículo.

  • O como hemos visto en ésta entrada sincronizar los archivos de un mirror o repositorio remoto a un directorio local de nuestro equipo:
    testsrv:~ # rsync --times --perms --recursive --links --verbose --progress mirrors.nl.eu.kernel.org::opensuse/update/12.3/ /opt/opensuse/12.3/repo/update/ --delete-after --human-readable --itemize-changes --stats --exclude=x86_64
    
Para conocer los argumentos soportados por el comando rsync les recomiendo leer su man page, la lista es bastante extensa y sus funcionalidades están bien detalladas.


Enlaces

Comentarios