A maneira mais rápida de mover um grande número de arquivos?

7

Tenho que mover 320.000 arquivos, 80.000 pastas (apenas 100 Gb) de dados. Alguns arquivos são > 1 GB, mas a maioria é < 1kB.

Eu dei uma olhada no método mais rápido de copiar arquivos , mas eu ' Eu não tenho certeza de quão útil qualquer um deles será, meu problema não é sobre velocidades de taxa de transferência pura, mas realmente sobre a rapidez com que o Windows pode lidar com o IO de 320.000 arquivos.

Você acha que veremos benefícios de velocidade usando xcopy, robocopy, teracopy ou fastcopy?

Levamos muito tempo (12 horas +) para copiá-los uma vez (usando o robocopy), e eu odeio ter que fazer isso de novo. O que posso fazer para acelerar?

O material está em um disco externo USB 2.0.

    
por in.spite 17.08.2009 / 10:20

7 respostas

9

Algo como o robocopy será sua melhor aposta. Drives USB não podem lidar com um monte de IO para começar.

Eu enviei milhões de arquivos pequenos para e de unidades USB usando o robocopy. Leva tempo, mas faz o trabalho.

    
por 17.08.2009 / 10:30
3

Como mrdenny disse, o Robocopy seria o melhor, em parte por causa de sua robustez. O melhor conselho que posso oferecer, desde que você tenha certeza da limpeza dos arquivos a serem movidos, é certificar-se de que o software antivírus esteja desabilitado enquanto eles estão sendo movidos. Você realmente não quer a sobrecarga de ter todos esses arquivos sendo escaneados.

    
por 17.08.2009 / 14:15
1

Obviamente, existe um caminho mais rápido do que todos os mencionados aqui. Mais rápido, mas menos flexível :-) Se você colocou os arquivos em uma partição separada, você pode copiar a partição inteira para o disco de destino.

Não estou familiarizado com nenhuma ferramenta gratuita do Windows para o trabalho (a ferramenta com suporte a VSS seria perfeita), mas com certeza você pode inicializar o CD Ghost ou o CD do Partition Magic ou inicializar um CD autônomo do Linux. No linux você apenas dd da partição, ou ntfsclone se isso for uma partição NTFS.

    
por 22.08.2009 / 13:26
0

Se eu fosse você, mudaria o disco rígido externo para um Firewire, a transferência de velocidade é muito mais rápida do que o USB2.

Acho que talvez empacotar os arquivos em um único "tar" e, em seguida, transferir os arquivos economizaria um pouco de tempo. Porque reduz os tempos de E / S, desde que você copie apenas 1 arquivo gigante, comparado a milhares de arquivos, ele também consome menos recursos, acredito (durante a fase de cópia). Ou você pode canalizar o fluxo de alcatrão direto para o seu drive USB.

    
por 17.08.2009 / 12:31
0

Eu descobri que a maneira mais eficiente de copiar um grande número de arquivos era transferi-los para arquivos ISO primeiro e depois copiar os ISOs. Desta forma, o disco não está preocupado com a emissão dos milhares de comandos necessários para copiar arquivos.

Claro que isso depende da sua estrutura de diretórios. Tive a sorte de ter um novo diretório criado em intervalos de 4,7 GB, o que tornou muito mais fácil criar um VBScript para automatizar o processo.

    
por 17.08.2009 / 15:29
0

Você certamente experimentará um melhor desempenho geral para a sequência de transferência se primeiro compactar os arquivos de origem em um único arquivo (tar ou compactado em zip, etc) e depois transferir o arquivo a rede e, em seguida, descompacte o arquivo no destino.

Por favor, não se esqueça que quando você está transferindo o arquivo pela rede, será melhor usar ftp (ou outro protocolo de transferência orientado a arquivos) do que uma simples cópia de arquivo SMB.

Usando um processo como o acima, eu rotineiramente transfiro diretórios de aplicativos de cerca de 60 GB (com cerca de 50.000 a 75.000 arquivos) entre múltiplos datacenters separados geograficamente (EUA, Europa, Ásia). A diferença entre transferir um arquivo por vez e transferir um arquivo compactado por FTP é 10 a 40 vezes mais rápida.

O Rsync também pode ser seu amigo aqui (como acontece em muitos outros cenários de transferência de arquivos).

Se você estiver aberto a opções comerciais, uma solução de fluxo binário baseada em UDP que possa enviar bits por vários fluxos UDP pode ser de valor para você. Dê uma olhada no link

    
por 30.08.2009 / 10:43
0

Outra opção seria usar Bittorrent usando um rastreador embutido ou DHT ativado. O cliente agruparia todos os arquivos em blocos (use 2MB ou maior, se disponível). No final do recebimento, você receberá arquivos em grandes blocos enquanto são gravados no disco rígido. Isso ajuda a consolidar seus pequenos arquivos em blocos de 2 MB e você obtém melhores taxas de transferência e

    
por 27.02.2013 / 20:04