Copiando milhares de arquivos no mesmo HD

1

Eu me encontrei em uma situação que estou copiando um sistema de arquivos inteiro através de duas partições HD diferentes (tamanhos diferentes e tipos de sistema de arquivos). O problema até agora é que ambos cp e rsync lerão um único arquivo na origem e o escreverão no destino - fazendo isso para cada arquivo pequeno. Portanto, eu tenho apenas um pequeno buffer do sistema operacional e o próprio cache do HD para evitar que o HD siga para frente e para trás para cada arquivo pequeno - mas parece que está bem próximo disso.

A máquina tem muita memória RAM. O que eu poderia dizer, ler vários megabytes (ou até GB) de dados na mesma partição antes de começar a fazer isso na outra partição?

Se for importante, estou copiando do BTRFS para o EXt4 - os dados incluem várias árvores git, arquivos de origem e outros (poucos arquivos grandes de vídeo e áudio).

    
por jsbueno 14.09.2013 / 06:39

1 resposta

2

Você pode tentar usar cpio ou tar piping, por exemplo, usando cpio ' --io-size

Dito isso, não acredito que você obteria um desempenho melhor do que conseguiria, deixando cp ou rsync fazer o trabalho deles. Na verdade, é o trabalho do sistema de arquivos e do sistema operacional subjacente para lidar com o comportamento do driver de disco rígido e ajudá-lo a decidir se deve procurar ou não.

Você pode obter uma visão melhor sobre isso com este Então pergunta . Particularmente:

EDIT: Ah, "native Linux" may be improving performance by interleaving reads and writes with asynchronous I/O. Letting commands pile up can help the disk driver decide when is best to seek. You might try Boost Asio or pthreads for comparison. As for "can't beat POSIX file descriptors"… well that's true if you're doing anything with the data, not just blindly copying.

    
por 14.09.2013 / 08:00