Por que o tar | tar é muito mais rápido que o cp?

8

Para copiar recursivamente um diretório, usar tar para empacotar um diretório e enviar a saída para outro tar para desempacotar parece ser muito mais rápido do que usar cp -r (ou cp -a ).

Por que isso? E por que o cp não pode ser feito mais rápido fazendo o mesmo sob o capô?

Editar: notei essa diferença ao tentar copiar uma estrutura de diretórios enorme contendo dezenas de milhares de arquivos e pastas, profundamente aninhados, mas totalizando apenas cerca de 50MB. Não tenho certeza se isso é relevante.

    
por callum 26.07.2014 / 20:34

1 resposta

5

Cp abre-lê-fecha-abre-escreve-fecha em um loop sobre todos os arquivos. Portanto, ler de um lugar e escrever para outro ocorre totalmente intercalado. Tar|tar lê e escreve em processos separados e além disso tar usa vários segmentos para ler (e gravar) vários arquivos 'de uma só vez', efetivamente permitindo que o controlador de disco busque, armazene e armazene muitos blocos de dados de uma só vez . Em suma, tar permite que cada componente funcione com eficiência, enquanto cp divide o problema em partes diferentes e ineficientemente pequenas.

    
por 11.10.2015 / 13:30

Tags