Como copio rapidamente 900.000 arquivos?

8

Eu preciso copiar alguns dados que incluem 900.000 arquivos minúsculos, totalizando cerca de 30 gigabytes para um computador com Windows. No entanto, ele precisa ser capaz de ser copiado e configurado em menos de uma hora e meia, e pode levar mais de 5 horas para copiar um disco rígido USB, principalmente devido à quantidade de arquivos malucos. Existe uma maneira melhor / mais rápida de lidar com isso, como fazer algum tipo de cópia em bloco? Obrigado

    
por Joe Lyga 05.12.2011 / 21:15

8 respostas

6

Com um grande número de arquivos, é melhor criar um arquivo TAR para que você tenha menos arquivos para lidar. Se você estiver usando um disco rígido externo USB 2.0, deve usar o USB 3.0, eSATA ou usar uma rede local rápida.

Qual é o seu sistema operacional de origem? Se ambos os sistemas operacionais fossem Linux, você poderia enviar os arquivos por meio de tar, gzip e ssh para a máquina de destino. Você também pode instalar o cygwin no Windows para obter esse tipo de funcionalidade para o Windows.

Atualização:
" Usando Tar e SSH para melhorar velocidades SCP "post descreve os comandos necessários para enviar o conteúdo do tar sobre o ssh.

    
por 05.12.2011 / 21:45
7

Se o disco rígido puder ser removido da interface USB e para o SATA / ATA, eu o instalaria no computador de destino. Você terá velocidades de transferência muito mais rápidas, como outros notaram. Para copiar, supondo que você esteja no Windows, eu faria um ROBOCOPY simples. É o mais rápido que você pode esperar, embora existam outras alternativas.

ROBOCOPY /E /B /MT 'source' 'destination'

Eu tentaria evitar a compactação de todos esses arquivos, mas há uma boa chance de o tempo para compactar e mover exceder os arquivos.

* Adicionada a opção / MT para robocopy. Ele pode acelerar muito as transferências quando você está em um ambiente multi-thread.

    
por 06.12.2011 / 00:07
6

Você pode tentar tirar uma foto da pasta / unidade inteira

Em sistemas Linux, você pode usar dd para obter uma cópia bruta do sistema de arquivos e copiá-lo como um único arquivo grande.

Para extrair a imagem para o Windows, pode ser necessário instalar o cygwin ou um programa capaz de processar dd images.

    
por 05.12.2011 / 21:23
3

Instale o disco onde os arquivos de origem residem no computador que você está configurando e transfira o disco para o disco. Esqueça o USB. Até mesmo a transferência pela rede (as máquinas juntas) seria mais rápida que a USB (Assumindo usb 2.0 e 1Gbps NIC). Se este for um evento recorrente, consulte a replicação.

    
por 05.12.2011 / 21:31
3

Use a opção rsync com z .

-z,         --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST

Isso aumentará a velocidade de transferência pela rede. Então provavelmente não é útil no seu caso.

Depois de mais algumas leituras, percebi que não devemos usar o sinalizador "-z" ao copiar dados de um disco rígido local para outro, o que aumenta a sobrecarga. Obrigado a comentar de @FakeName.

    
por 05.12.2011 / 22:48
1

Você está se aproximando rapidamente das limitações do seu disco rígido. De fato, com as atuais unidades de commodity, é impossível identificar seu tempo de transferência com uma operação de cópia por arquivo.

Assumindo que cada arquivo requer 1 tempo de busca HD, o tempo de busca é de 7 ms (o que é um pouco idealizado, realisticamente, cada arquivo exigirá dois buscas, a menos que o bitmap do volume seja armazenado em cache) melhor você irá gerenciar ~ 142 arquivos / seg (\ $ \ frac {1000} {7} = 142.8 ... \ $).

Com as especificações OP (30 GB, 900.000 arquivos) que é ~ 33K por arquivo (\ $ \ frac {30.000.000k} {900.000} = ~ 33.3 ... \ $. 33KB * 142 = 4.68 MBps.

O tempo mínimo para transferir 30 GB a 5 MBps é de ~ 1 hora, 40 minutos (\ $ \ frac {30.000} {5} = = 6.000 \ $ segundos. \ $ \ frac {6,000} {60} = 100 \ $ minutos ou 1:40 horas)

Portanto, é impossível alcançar uma velocidade melhor que ~ 5 MBPS, e isso é com uma unidade ideal (e menos operações de busca. Isso é para uma busca por arquivo. Realisticamente, seria ser dois). Você está limitado inteiramente pelo desempenho do disco.

A única maneira de melhorar o desempenho é copiar todo o sistema de arquivos & partição sequencialmente. dd pode fazer isso no linux.

O que você está tentando fazer?

    
por 08.12.2011 / 08:10
0

Tente o 7zip para arquivar os arquivos em apenas um arquivo. Se possível, use a WLAN com uma conexão adhoc para um notebook.

    
por 05.12.2011 / 21:25
0

Relacionado à resposta do @arcyqwery, você pode compactá-lo e simultaneamente transformá-lo em um arquivo grande. Isso irá acelerar o processo.

Também pode valer a pena usar um programa como o TeraCopy , que geralmente é mais rápido que a cópia padrão do Windows. desempenho. Você deve testar com circunstâncias semelhantes no seu caso para verificar se.

    
por 05.12.2011 / 21:41