Transferir arquivo que continua mudando com novas linhas anexadas

1

Por isso, tenho um computador Windows que coleta dados continuamente para um experimento de física. Os dados são salvos em um arquivo de texto para o qual cada novo evento é anexado em uma nova linha.

Toda vez que eu preciso re-analisar os dados eu transfiro o arquivo para um computador Ubuntu pelo ssh, isso é bom no começo, mas quando o arquivo passa o 1GB começa a ser muito demorado para transferir o arquivo buraco de novo e de novo, quando apenas as últimas linhas são diferentes.

Para você ter uma ideia, os experimentos duram cerca de 3h, a transferência leva ~ 5min por GB, os arquivos têm, no máximo, 3GB e os arquivos têm um número de linha na ordem de dezenas de milhões.

Caso você tenha uma solução que funcione apenas para uma transferência do linux para o linux, também estou interessado, talvez eu possa tentar com o cygwin.

    
por Presbitero 13.01.2014 / 19:12

2 respostas

2

rsync é o que você precisa e deve estar disponível para o Windows.

O rsync é famoso por seu algoritmo de transferência delta, que reduz a quantidade de dados enviados pela rede enviando apenas a diferença entre os arquivos de origem e os arquivos existentes no destino. (tirada de man rsync ).

Instale o rsync em seu sistema Windows e, em seguida, no sistema Linux:

rsync --progress ip.of.windows.server:/path/to/file ./

Ele transferirá apenas as partes que foram alteradas. Se o arquivo evoluir como você diz, cada transferência será muito pequena e rápida.

Note que o rsync se conecta usando o ssh, então se você já tem o ssh configurado e funcionando, o rsync também deve funcionar bem.

    
por roadmr 13.01.2014 / 19:20
1

Se apenas as últimas linhas do arquivo forem alteradas a cada vez, transferir o arquivo inteiro várias vezes não é a melhor solução.

Existem ferramentas que calculam as diferenças do arquivo e copiam somente os novos bits, como rsync (usando codificação delta, mais informações aqui: link )

    
por hytromo 13.01.2014 / 19:20