Como processar séries de arquivos após a conclusão da transferência

0

O que eu tenho

Eu tenho 2 servidores. Vamos chamá-los de sen.der e recei.ver .

O remetente gera arquivos; esses arquivos podem variar em tamanho de 20Kb a 30Gb.

Eu escrevi um script que verifica o tamanho do arquivo quando ele é gerado e, se for menor que 10Mb, envia o arquivo para recei.ver via SFTP. Caso contrário, se for maior que 10Mb, divide em pedaços de 10Mb e os envia para recei.ver via SFTP.

O tempo de envio é obviamente determinado pelo tamanho do arquivo e pela velocidade da linha. Essa velocidade de linha pode ser tão baixa quanto 100Kbps, o que teoricamente pode levar até 11 horas para transferir o maior arquivo.

O que eu preciso

O que eu estou tentando fazer é fazer com que recei.ver automaticamente coloque os arquivos de volta em um grande (e execute alguns recados extras como untar, enviar e-mail de notificação, etc.).

O que eu poderia fazer

Eu poderia tentar usar inotifywait com a opção -m e, em seguida, verificar o tamanho dos arquivos que estão sendo gravados e, em seguida, colocar o lote quando o último arquivo criado tiver menos de 10.485.760 bytes.

Eu poderia catar os pedaços e testar o tar com tar tf <filename>; echo $?

Existe uma maneira melhor?

Provavelmente funcionaria ... Mas não parece elegante. Existe uma maneira melhor de fazer isso?

    
por Jim 31.08.2018 / 11:41

1 resposta

1

Usar o tamanho de um arquivo parcial como um marcador final implícito pode ser frágil. Muito melhor seria enviar as partes primeiro e então enviar um arquivo de controle que lista as partes (talvez com checksums sha256 para detectar problemas de transferência) para que o programa receptor possa verificar se todas as partes foram transmitidas e começar a remontar somente então. p>     

por 31.08.2018 / 13:07