Posso baixar o arquivo tar.gz enquanto ele está sendo compactado?

1

Estou compactando um diretório enorme que pode ter mais de 10 GB. Leva tempo para compactá-lo. Mas, ao mesmo tempo, tenho que baixar isso para outro novo servidor.

Assim, enquanto a compactação está acontecendo, posso baixar esse arquivo de outro servidor? Após o download, funcionará corretamente?

    
por Mani 11.12.2015 / 13:11

2 respostas

3

Você pode fazer tudo isso em dois comandos, um no servidor, um no cliente usando tar, gzip, tee, nc.

No servidor: tar cf - dirname/ | gzip -c - |tee dirname.tar.gz | nc -l 3333

No cliente nc serveraddress 3333 > dirname.tar.gz

nc significa netcat, uma ferramenta útil que se comporta como cat para uso de rede. nc -l 3333 criará um soquete de escuta na porta local 3333 e transmitirá o conteúdo de stdin para quem já se conectar a ele.

nc serveraddress 3333 estabelecerá uma conexão tcp para o servidor na porta 3333 e transmitirá em stdout tudo o que receberá na conexão do soquete.

Esta é uma maneira muito fácil de transferir arquivos em diferentes máquinas enquanto executa vários encadeamentos de comandos como tar / gzip / tee ....

    
por 11.12.2015 / 14:33
2

Não tenho certeza se você pode fazer o download de um processo de compactação existente, mas é possível usar rsync com a diretiva --inplace . Você precisará fazer isso repetidamente até que o host tenha concluído o processo de compactação. Você precisará executá-lo mais uma vez após a conclusão da compactação para obter o delta final das alterações.

Outra maneira é começar a baixar o arquivo diretamente ao criar o arquivo usando:

ssh user@host "tar cf - /path/to/files|gzip -c -| \
tee /path/to/compressed_file" > /path/to/local_compressed_file

O comando acima criará um tar archive para stdout , compactará o fluxo também para stdout e usando tee o arquivo será gravado no host, bem como para stdout , que podem ser salvos para uma cópia local.

    
por 11.12.2015 / 13:41