Script shell para ler 2 arquivos e executar a operação rsync

0

Existe alguma maneira de ler 2 arquivos para os seguintes valores e executar operações de rsync para copiar arquivos de diferentes hosts & JVMs.

Nota: Temos dois hosts diferentes, enquanto as JVMs são comuns em ambos os hosts, conforme são executados no cluster.

Atualmente, tenho abaixo os comandos em um script de shell. No entanto, gostaria de passar os valores para Host_Name e JVM_Name por meio de arquivos ou arquivos de leitura.

Por exemplo,

Host_1

rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_1/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_1/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_2/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_2/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_3/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_3/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_1/logs/JVM_Name_4/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_1/JVM_Name_4/messages.log

Host_2

rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_1/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_1/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_2/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_2/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_3/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_3/messages.log
rsync -hav -e ssh --info=progress2 user@loggerserver:/xxx/xxxx/host_name_2/logs/JVM_Name_4/logs/messages.log        /cygdrive/d/xxx/xxxx/host_name_2/JVM_Name_4/messages.log
    
por khuharshree 05.03.2018 / 17:04

1 resposta

0

Crie um arquivo hosts chamado hosts.txt contendo os hosts que você deseja. Então corra:

for i in $(cat hosts.txt); do for j in {1..4}; do rsync -hav -e ssh
--info=progress2
user@loggerserver:/xxx/xxxx/$i/logs/JVM_Name_$j/logs/messages.log
/cygdrive/d/xxx/xxxx/$i/JVM_Name_$j/messages.log; done; done

Você pode alterar os números nas chaves para conter o intervalo desejado.

    
por 05.03.2018 / 18:53