<Actualización>
Este post fué publicado originalmente el 18 de Junio de 2007 y ha sido actualizado en fecha 24 de Septiembre de 2007 para que funcione con la nueva organización de repositorios de Arch Linux (se eliminó current y su contenido se distribuyó entre extra y un nuevo repo llamado core, que incluye sólo la base necesaria para que la distribución funcione)
</Actualización>

El siguiente script sincroniza (mediante rsync) un repositorio de Arch con un directorio en local en nuestro PC. Compartiendo este directorio mediante NFS, Samba, FTP o lo que sea, podremos actualizar todas las máquinas de nuestra LAN sin que cada una de ellas deba bajarse las actualizaciones de Internet.

El ejemplo siguente almacena en /repositorio el contenido de core, extra y community para arquitectura i686. En total no llega a 7GB. Si queremos también unstable y testing debemos eliminar las lineas que los excluyen. Lo mismo para las ISOs o para los repositorios de x86_64:

#!/bin/bash
# Sincroniza el repositorio de Arch del servidor 'distro.ibiblio.org'
# con el directorio /repositorio

# Definición de los parámetros usados:
#
# a, --archive -->               archive mode; same as -rlptgoD (no -H)
# v, --verbose               --> increase verbosity

# Definimos el servidor y el directorio local
SERVER=distro.ibiblio.org::distros/archlinux/
LOCAL_DIR=/repositorio/

rsync -av \
--delete-after \
--exclude=0.8 \
--exclude=current \
--exclude=iso \
--exclude=x86_64 \
--exclude=images \
--exclude=other \
--exclude=release \
--exclude=unstable \
--exclude=testing \
$SERVER $LOCAL_DIR

Esto puede cambiar según el repositorio fuente usado. En el que uso como ejemplo no se almacenan versiones anteriores a la 0.8, por lo que no hace falta excluirlas.

El parámetro –delete-after es muy importante, sirve para eliminar los paquetes del destino (nuestro PC) cuando ya no están en el origen (por ejemplo, eliminar foo-1.tar.gz si hay disponible foo-2.tar.gz). El resto de parámetros creo que ya están bien explicados en el propio script, para más información: man rsync

El siguente paso es decirle a pacman que no busque los paquetes en Internet sino en /repositorio. Esto es realmente fácil, sólo hay que modificar el fichero /etc/pacman.conf de la siguiente forma:

[core]
Server = file:///repositorio/core/os/i686

[extra]
Server = file:///repositorio/extra/os/i686

[community]
Server = file:///repositorio/community/os/i686

Ahora el siguiente paso es usar cron para automatizar la sincronización, pero esto os lo dejo a vosotros. Para cualquier duda, hay mucha más información en http://wiki.archlinux.org/index.php/Local_Mirror