Respondendo a minha própria pergunta, para documentar isso para os outros.
Agora, estamos praticamente certos de que os antigos arquivos updateinfo.xml são supérfluos para as necessidades. Aparentemente, eles acumulam apenas porque o valor do hash que é prefixado ao nome do arquivo. Com base nisso, fiz algumas alterações e agora o repositório permanece basicamente de tamanho estático.
Em sua forma original, após os comandos reposync e createrepo citados na pergunta, o script executa gunzip seguido por um comando modifyrepo que cria um novo arquivo updateinfo.xml.gz no diretório ../repodata:
if [ -n "$(/bin/ls -t $destdir/$fn/*updateinfo.xml.gz 2>/dev/null)" ]; then
gunzip -c $(/bin/ls -t $destdir/$fn/*updateinfo.xml.gz) > $destdir/$fn/updateinfo.xml 2>> $LOGFILE
modifyrepo $destdir/$fn/updateinfo.xml $destdir/$fn/repodata >> $LOGFILE 2>&1
fi
Alterei esta seção para:
if [ -n "$(/bin/ls -t $destdir/$fn/*updateinfo.xml.gz 2>/dev/null)" ]; then
gunzip -c $(/bin/ls -tr $destdir/$fn/*updateinfo.xml.gz|tail -1) > $destdir/$fn/updateinfo.xml 2>> $LOGFILE
modifyrepo $destdir/$fn/updateinfo.xml $destdir/$fn/repodata >> $LOGFILE 2>&1
# clean up old update info - keeping only the 2 most recent files.
for i in $destdir/$fn $destdir/$fn/repodata; do
for j in '/bin/ls -t ${i}/*updateinfo.xml.gz|tail -n +3'; do
echo "removing security file "$(ls -l ${j}) >> $LOGFILE
/bin/rm -f ${j} >> $LOGFILE 2>&1
done
done
fi
O comando gunzip descompacta apenas o updateinfo.xml mais recente devido à ordenação inversa no registro de data e hora e no comando tail. Como resultado, o novo arquivo no diretório repodata conterá apenas uma versão. A segunda mudança é excluir todos os arquivos updateinfo.xml antigos, barra 2 (apenas no caso).
Estamos trabalhando com esta versão há vários meses e não notamos nenhum efeito colateral indesejado.