Creación de repositorios locales de GNU/Linux con Debmirror (exclusión de determinados archivos)

Saludos nuevamente.

En un post anterior les hablé sobre Debmirror, una de las herramientas que utilizamos para la creación repositorios locales de distribuciones y/o aplicaciones GNU/Linux basados en la paquetería DEB.

Hoy vengo con un TIP que implementé hoy en el caso de las descargas de las ramas backports de los repositorios de Debian.

Resulta que la descarga del Debian Jessie Backport supera los 5 GB y la de Debian Wheezy Backport  los 12 GB (¿se acuerdan de que mi AB es de sólo 256 KBps (32 KB/s)?). Bien, la cosa es que muchos de esos archivos son paquetes que contienen la cadena -dbg en su nombre. Estos paquetes contienen los símbolos de depuración (debug) sobre el funcionamiento (o mal funcionamiento) de los programas, los cuales son de utilidad si somos programadores y/o betatesters; en caso contrario, pues, no nos son necesarios.

Entonces, en mi caso -no porque no sea programador o betatester- esos archivos no me son necesarios, así que para aligerar un poco la descarga de paquetes en pos de crear mi copia local de los repositorios antes mencionados con lo que me hace falta solamente voy a excluir de la misma los archvos de debug (los que contienen la cadena «-dbg» en su nombre).

El script, para el caso del Debian Jessie Backports quedaría así:

#!/bin/sh

# Version: 1.0.2
# Programador: Lic. Hector Suarez Planas
# Cargo: Administrador, Nodo CODESA – Grupo Empresarial de la Construccion
#        Santiago de Cuba
#
# Script para sincronizar la Rama Backports del Repositorio de Debian 8.0
# en Internet.
#
# NOTA: Este script es una modificacion del script original proporcionado
#       por los Administradores de Infomed.
#
# Control de cambios:
#
# 20/11/2015: Se excluye los archivos de debug de la compilacion de los
#             paquetes DEB porque son excesivamente grandes y no son
#             realmente necesarios (cambio de numero de version a la
#             1.0.2)
#

# Mirror host
FROM=debian.netcologne.de

# Archive location
TO=/srv/distros/debian-jessie-backports

# —–

DATE=$(date «+%Y-%m-%d»)
DATE_FILENAME=$(date «+%Y-%m-%d__%H.%M.%S»)
DATE_LOGHEADER=$(date «+%d %b %Y – %H:%M:%S»)

BASELOGDIR=/var/log/repos
LOGDIR=$BASELOGDIR/$DATE
LOGFILE=debian-jessie-backports_sync-$DATE_FILENAME.log
TARGETLOG=$LOGDIR/$LOGFILE

# Si no existe el directorio base, crearlo y asignarle
# permisos
[ -d $BASELOGDIR ] || mkdir -p $BASELOGDIR

# Si no existe el directorio, crearlo y asignarle
# permisos
[ -d $LOGDIR ] || mkdir -p $LOGDIR

# Si no existe el archivo, crearlo y asignarle
# permisos
[ -f $TARGETLOG ] || touch $TARGETLOG

chown -R root.root $BASELOGDIR/
chmod 750 $(find $BASELOGDIR -type d)
chmod 640 $(find $BASELOGDIR -type f)

echo «———————————————» >> $TARGETLOG
echo » Registro de eventos de sincronizacion de la » >> $TARGETLOG
echo » rama Backports del Repositorio de           » >> $TARGETLOG
echo » Debian 8.0 (Jessie)» >> $TARGETLOG
echo «» >> $TARGETLOG
echo » $DATE_LOGHEADER» >> $TARGETLOG
echo «———————————————» >> $TARGETLOG
echo «» >> $TARGETLOG

# Delete temp folder first
rm -rf $TO/.temp/

# Main archive
debmirror \
    –passive \
    –progress \
    –verbose \
    –host=$FROM \
    –root=debian \
    –dist=jessie-backports \
    –section=main,contrib,non-free \
    –arch=i386,amd64 \
    –timeout=1600  \
    –method=http \
    –cleanup \
    –nosource \
    –ignore-small-errors \
    –diff=none \
    –exclude=-dbg \
    $TO >> $TARGETLOG 2>&1

Con este cambio, ya no tengo que descargar tanto volumen de información, miren los valores siguientes:

  • Debian Jessie Backports: Antes 5.7 GB, ahora aproximadamente 2.5 GB
  • Debian Wheezy Backports: Antes 12.4 GB, ahora aproximadamente 5.6 GB

 

Aún así es bastante lo que tengo que descargar, así que sigue cumpliéndose el famoso dicho cubano de que «Con mucha paciencia y…».

🙂

Acerca de Hector Suarez Planas

Es Licenciado en Ciencia de la Computación (3 de julio de 2002). Ha sido Administrador de Red en varias organizaciones, Programador y Analista de Sistemas. Actualmente se desempeña como Administrador de Red del Telecentro Tele Turquino de Santiago de Cuba. Tiene experiencia con sistemas Windows y GNU/Linux, Infraestructura de Redes (Cisco, AlliedTelesis, Netgear y HP ProCurve, Vyatta/VyOS), Servidores tanto físicos como virtuales (plataformas VMWare, Proxmox VE y Xen), Sistemas de Seguridad Informática (Snort/Suricata IDS, appliances AlienVault OSSIM), programador (Delphi, C++ Builder, Perl [poco], Python [algo]), entre otras cosas. Actualmente estoy incursionando en todo lo que tiene relación con Cloud Computing (OpenStack) y Centros de Datos. :-)
Esta entrada fue publicada en Actualizaciones, Debmirror, Distribuciones GNU/Linux. Guarda el enlace permanente.

10 respuestas a Creación de repositorios locales de GNU/Linux con Debmirror (exclusión de determinados archivos)

  1. Adrian González Ruíz dijo:

    Te comento para felicitarte por el trabajo que estas haciendo en tu blog y la ayuda que les etás dando (desde mi punto de vista) a los admin de red que en su empresa todavía no tienen acceso a internet.

    Saludos desde Camaguey.

    • Hector Suarez Planas dijo:

      Saludos, Adrián.

      Muchísimas gracias por tu comentario, es una prueba de que el objetivo por el cual decidí crear este blog en CubaVa.CU se está cumpliendo a cabalidad.

      😀

  2. Karas dijo:

    pues si para mi uno de los mejores blog de redes de la red nacional

    • Hector Suarez Planas dijo:

      Saludos, Chamaco.

      Oye, hace rato que no te veo. ¿Donde te metes? Cuando vas para LTU te pierdes del radar, jejejeje.

      Gracias por tu comentario.

  3. Karas dijo:

    off topic : Jaja na aqui en la DPS tu sabes pinchando jajajaj ya tienes 11084 visitas jejejeej

    • Hector Suarez Planas dijo:

      Saludos, hermano.

      ¿Ya te llevaron para la DPS? Veo que actuaron rápido, no pierden tiempo.

      Con respecto al blog, sí, ya son unas cuantas visitas. Hoy tengo pensado poner dos artículos de los temas que ya he completado en el manual. El borrador ya va por 79 páginas y creciendo.

      😀

  4. Karas dijo:

    Pues seguro padrino jejej dentro de poco te voy a enviar un post para que lo pongas en el blog sobre varnish jejejeje deja que veas lo que tengo

    • Hector Suarez Planas dijo:

      Jejejejeje, te veo hecho un contributor, eso es bueno. Sólo te voy a decir lo que siempre te digo: impresióname. 😀

  5. luis dijo:

    Saludo Hector, me das una idea, en el caso de Ubuntu Bionic cuales serían las lineas a modicar, quiero llevarme para la casa un repo en mi disco externo y no logro modificar el script para copiar el repo de Ubuntu de mi empresa.
    Saludos y excelente labor amigo

    • Hector Suarez Planas dijo:

      Saludos, Luis.

      Primero que todo, gracias por su comentario.

      Bueno, decirle que ahora mis script son más pequeños gracias a las sugerencias de un colega. Aparte de eso, le he añadido algunas cosillas. Acá lo tiene:

      #!/bin/bash

      # Version: 1.0.4
      # Programador: Lic. Hector Suarez Planas
      # Cargo: Administrador, Nodo Telecentro Tele Turquino de Santiago de Cuba
      #
      # Script para sincronizar el Repositorio de Ubuntu 16.04 (Xenial) ubicado
      # en Internet
      #
      # NOTA: Este script es una modificacion del script original proporcionado
      # por los Administradores de Infomed.
      #
      # Control de cambios:
      #
      # 01/02/2017: Cambio del origen de donde se descargaran los repositorios
      # de paquetes DEB de Ubuntu debido a que en el repo ubicado
      # en el FTP del ICRT le faltan archivos (cambio de numero de
      # version a la 1.0.1)
      #
      # 05/05/2017: Cambio del origen de donde se descargaran los repositorios
      # de paquetes DEB de Ubuntu debido a que en el repo ubicado
      # en la Universidad del Estado de Oregon en EE.UU. me esta
      # dando un comportamiento inestable (cambio de numero de
      # version a la 1.0.2)
      #
      # 12/02/2018: Limpieza por Hugo (cambio de numero de version a la 1.0.3)
      #
      # 07/11/2018: Adicion de la notificacion via correo electronico al buzon del
      # Administrador de la Red (cambio de numero de version a la 1.0.4)
      #

      # Mirror host
      FROM=mirror.math.princeton.edu

      # Archive location
      TO=/srv/datos/linux/distros/ubuntu

      # -----

      DATE=$(date "+%Y-%m-%d")
      DATE_FILENAME=$(date "+%Y-%m-%d__%H.%M.%S")
      DATE_LOGHEADER=$(date "+%d %b %Y - %H:%M:%S")

      BASELOGDIR=/var/log/repos
      LOGDIR=$BASELOGDIR/$DATE
      LOGFILE=$LOGDIR/ubuntu_sync-$DATE_FILENAME.log

      # Establecer mascara de permisos
      umask 0077

      # Crear directorios y archivos de registros en caso de que no existan
      mkdir -p $LOGDIR
      touch $LOGFILE

      echo "---------------------------------------------" >> $LOGFILE
      echo " Registro de eventos de sincronizacion de la " >> $LOGFILE
      echo " rama Security del Repositorio de Ubuntu " >> $LOGFILE
      echo "" >> $LOGFILE
      echo " $DATE_LOGHEADER" >> $LOGFILE
      echo "---------------------------------------------" >> $LOGFILE
      echo "" >> $LOGFILE

      # Delete temp folder first
      rm -rf $TO/.temp/

      # Main archive
      debmirror \
      --passive \
      --progress \
      --verbose \
      --host=$FROM \
      --root=pub/ubuntu \
      --dist=xenial,xenial-backports,xenial-proposed,xenial-security,xenial-updates \
      --section=main,restricted,universe,multiverse \
      --arch=i386,amd64 \
      --i18n \
      --exclude='-dbg_' \
      --exclude='-dbgsym_' \
      --include='/Translation-es.*\.bz2$' \
      --include='/Translation-es.*\.gz$' \
      --include='/Translation-en.*\.bz2$' \
      --include='/Translation-en.*\.gz$' \
      --exclude='/Translation-.*\.bz2$'\
      --exclude='/Translation-.*\.bz$'\
      --exclude='/Translation-.*\.gz$'\
      --exclude='/Translation-.*\.xz$'\
      --timeout=1600 \
      --method=http \
      --cleanup \
      --nosource \
      --ignore-small-errors \
      --diff=none \
      --proxy=http://usuario:contraseña@proxy:puerto/ \
      --rsync-extra=none \
      $TO >> $LOGFILE 2>&1

      # Send notification mail

      SENDTO="usuario@dominio.cu"
      SUBJECT="Registro de eventos de sincronizacion del Repositorio de Ubuntu"

      SUCCESS_MESSAGE="La replica local del Repositorio de Ubuntu fue sincronizada exitosamente."
      FAIL_MESSAGE="La replica local del Repositorio de Ubuntu tuvo un fallo en la sincronizacion, por favor, chequear la causa."

      # Send mail to admin
      if grep -q "Everything OK" $LOGFILE; then
      mail -v -s "$SUBJECT" "$SENDTO" <<< "$SUCCESS_MESSAGE";
      else
      mail -v -s "$SUBJECT" "$SENDTO" <<< "$FAIL_MESSAGE";
      fi

      De ahí es solamente cambiar a xenial por bionic. Ah, en caso de no usar proxy, pues, es eliminar la línea correspondiente.

      🙂

Responder a Hector Suarez Planas Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *