scp .lzo arquivo e, em seguida, descompactado e exclua o arquivo .lzo

3

Eu tenho um script que copia arquivos .lzo de um servidor remoto. O script tentará copiar de cada um dos três servidores e enviará um email se um deles estiver inativo.

Meu script está abaixo e funciona conforme o esperado:

export status_dir=$(mktemp -t -d transfer.XXXXXX)
cleanup() { rm -rf "$status_dir"; }
trap cleanup 0 # automatically clean up on exit

do_Copy() {
  el=$1
  PRIMSEC=$2
  scp david@"$local_dc":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/. \
    || { touch "$status_dir/local_down" && scp david@"$remote_dc_1":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/.; } \
    || { touch "$status_dir/primary_down" && scp david@"$remote_dc_2":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/.; } \
    || { touch "$status_dir/secondary_down"; exit 1; }
}

parallel -j 12 do_Copy {} $PRIMARY ::: "${PARTITION_DATA_1[@]}" &
parallel -j 12 do_Copy {} $SECONDARY ::: "${PARTITION_DATA_2[@]}" &
wait

[[ -e "$status_dir/local_down" ]] && \
   mailx -r "[email protected]" -s "$local_dc machine down" "[email protected]" \
     <<<"Local machine $local_dc was down, so copied from Primary Remote machine $remote_dc_1"

[[ -e "$status_dir/primary_down" ]] && \
   mailx -r "[email protected]" -s "$remote_dc_1 machine down" "[email protected]" \
     <<<"Primary Remote machine $remote_dc_1 was down, so copied from Secondary Remote machine $remote_dc_2"

[[ -e "$status_dir/secondary_down" ]] && \
   mailx -r "[email protected]" -s "All three machine's are down" "[email protected]" \
     <<<"All three machines are down. Exiting out."

Quando o script acima estiver concluído, executo um segundo script para descompactar todos os arquivos .lzo e excluí-los:

#!/bin/bash
set -e
export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary

parallel lzop -dU -- ::: {"$PRIMARY","$SECONDARY"}/*.lzo

Eu gostaria de combinar os dois scripts. Em vez de ter que executar um segundo, faça com que o primeiro também descompacte e exclua os arquivos .lzo . Estou assumindo que apenas o bloco de código abaixo será modificado, mas não tenho certeza do que devo acrescentar por causa dos testes que uso para verificar se as máquinas estão inoperantes.

do_Copy() {
  el=$1
  PRIMSEC=$2
  scp david@"$local_dc":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/. \
    || { touch "$status_dir/local_down" && scp david@"$remote_dc_1":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/.; } \
    || { touch "$status_dir/primary_down" && scp david@"$remote_dc_2":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/.; } \
    || { touch "$status_dir/secondary_down"; exit 1; }
}

A combinação dos scripts é a melhor opção? Ou devo continuar fazendo o que estava fazendo anteriormente e ter dois roteiros? Se eu fizer da maneira que estou fazendo agora, será necessário ter mais espaço em disco para acomodar o arquivo .lzo e o arquivo .lzo não compactado ao mesmo tempo e, em seguida, excluir mais tarde?

    
por user1950349 10.10.2015 / 00:54

1 resposta

2

Claro que você pode combiná-lo. Se um servidor estava ativo ou não, é completamente irrelevante. Seja qual servidor você baixar, o arquivo .lzo estará sempre no mesmo lugar. Além disso, não faz diferença em termos de espaço em disco necessário se você tem um script ou dois. Por que deveria? Em ambos os casos, você está descompactando o mesmo arquivo. Basta adicionar as linhas do seu segundo script à função de cópia:

do_Copy() {
  el=$1
  PRIMSEC=$2
  scp david@"$local_dc":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/. \
    || { touch "$status_dir/local_down" && scp david@"$remote_dc_1":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/.; } \
    || { touch "$status_dir/primary_down" && scp david@"$remote_dc_2":"$dir3"/new_clients_2014_"$el"_200003_5.data.lzo "$PRIMSEC"/.; } \
    || { touch "$status_dir/secondary_down"; exit 1; }
}

PRIMARY=/test01/primary
SECONDARY=/test02/secondary

parallel lzop -dU -- ::: {"$PRIMARY","$SECONDARY"}/*.lzo
    
por 12.10.2015 / 13:52

Tags