Creación de repositorios locales de GNU/Linux con Debmirror

Saludos nuevamente.

Hoy vengo con otro script que puede ser útil para los que deseen tener una copia local de los repositorios de GNU/Linux. De seguro muchos ya han visto muchos manuales y tutoriales de Debmirror, una de las herramientas que se usan para crear un repositorio local de paquetes de cualquier distro GNU/Linux.

En mi caso, los scripts que poseo los heredé de los Administradores de Infomed cuando era parte del equipo (administraba el Nodo MEDIRED, Infomed – Santiago de Cuba), scripts que fui modificando con el tiempo para hacer un poco más cómoda la lectura de los logs. Desde que le hice la primera gran modificación el pasado 14 de noviembre de 2014 para hacer mucho más fácil el loggeo del proceso de descarga hasta la fecha me es mucho más fácil ver si la descarga tuvo un fallo o no. Además, mi objetivo principal fue organizar los archivos de logs por fecha.

Por ejemplo, para el caso de la actualización de la rama Security del repositorio de Debian, uso el siguiente script (el cual basta con modificarlo para tener el de otra distro):

Archivo debian-security_sync.sh:

#!/bin/sh

# Version: 1.0.3
# Programador: Lic. Hector Suarez Planas
# Cargo: Administrador, Nodo CODESA – Grupo Empresarial de la Construccion
#        Santiago de Cuba
#
# Script para sincronizar la Rama Security del Repositorio de Debian
# en Internet.
#
# NOTA: Este script es una modificacion del script original proporcionado
#       por los Administradores de Infomed.
#
# Control de cambios:
#
# 13/05/2015: Se anade la rama Updates del Debian 8.0 (Jessie) a la
#             sincronizacion
#

# Mirror host
FROM=debian.netcologne.de

# Archive location
TO=/srv/distros/debian-security

# —–

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-security_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 Security del Repositorio de Debian     » >> $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-security \
–dist=squeeze/updates,wheezy/updates,jessie/updates \
–section=main,contrib,non-free \
–arch=i386,amd64 \
–timeout=1600  \
–method=http \
–cleanup \
–nosource \
–ignore-small-errors \
–diff=none \
$TO >> $LOGDIR/$LOGFILE 2>&1

Como se ve, cada modificación que le hago la pongo en el control de cambios.

Entonces, como mi ancho de banda es de sólo 256 KBps (una tasa de transferencia máxima de 32 KB/s), lo que hago es ejecutar los scripts que tengo a una hora en que ya no hay nadie en el edificio (cerca de las 8:00 p.m.), donde el tráfico de navegación es relativamente pequeño. Ah, claro, cuando las actualizaciones exceden el GB de tamaño a descargar, se convierten en un gran dolor de cabeza para mi.

Por lo tanto, modificando los parámetros del script anterior, se pueden descargar las distros GNU/Linux que se desee. Claro, sé que aún se puede mejorar, pero eso se los dejo de tarea. Jejeje. 😀

Espero les sea de utilidad.

🙂

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.

Deja un comentario

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