Rsync um certo número de subdiretórios

1

Atualmente, estou trabalhando na migração de quase 80 servidores jenkins para nossa empresa em um único servidor jenkins. Eu já trabalhei como isso vai aparecer uma vez que os trabalhos migraram, no entanto, conseguir os trabalhos está provando ser um pouco difícil.

O que eu tenho atualmente é um comando rsync que controla todos os jobs e builds e está funcionando bem, mas isso não é mais viável em servidores inchados:

sshpass -p '*****' \
rsync -rmvptgolD \
--exclude='*/archive/*' \
--include='legacyIds' \
--include='nextBuildNumber' \
--include='last*Build' \
--include='log' \
--include='*.txt' \
--include='*.html' \
--include='build.xml' \
--include='changelog.xml' \
--include='config.xml' \
--include='*/' \
--exclude='*' \
-e 'ssh -o StrictHostKeyChecking=no -l user' \
user@server:/var/lib/jenkins/jobs/ \
/<destination>/jobs

sim, eu sei que sshpass é inseguro, esses servidores foram criados muito antes do meu tempo e não podemos adicionar chaves a eles para tornar essa conexão segura, pois agora estou com a parte sshpass .

Este comando rsync funciona perfeitamente nos servidores Jenkins que não têm muitos jobs / builds, mas o que eu encontrei está me forçando a reduzir as informações que temos certeza que ninguém mais precisa.

Eu me deparei com um servidor que agora tem mais de 5.000 empregos e cada um tem cerca de 50.000 builds, o que é um exagero, portanto, estabelecendo as metas abaixo

O objetivo final é copiar:

All jobs and the last 10 builds for each job

OR

All jobs and the last failed build and last successful build for each job

Minha principal questão é como adicionar um filtro rsync de algum tipo para incluir apenas os últimos 10 subdiretórios? ou algo assim. OU manter links simbólicos e copiar seu link como uma entidade separada?

este é um exemplo da estrutura de pastas de um servidor Jenkins:

jenkins/
  config.xml
  jobs/
    Job1/
      config.xml
      builds/
        1/
          build.xml
          archive/
          log
        2/
          build.xml
          archive/
          log
        3/
          build.xml
          archive/
          log
        4/
          build.xml
          archive/
          log
        n/
          build.xml
          archive/
          log
        lastFailedBuild/ -> 3/
        lastSuccessfulBuild/ -> 4/
    Job2/
      ...

Onde os diretórios build / [0-9] * / são o ID de construção em jenkins.

Qualquer ajuda seria muito apreciada, eu olhei rapidamente para a opção -L mas parece que remove o symlink, mesmo com -K e -k

Obrigado!

    
por iam-decoder 19.12.2017 / 21:27

0 respostas