Método mais rápido de copiar arquivos

14

Se tivermos uma compilação bem-sucedida em nosso servidor de compilação (CCNET), todos os arquivos de site do ASP.NET serão copiados para o diretório virtual (% output_dir%) para que os desenvolvedores possam ver / testar a versão mais recente do site. No final da construção, o seguinte arquivo bat é executado.

rmdir /s /q "%output_dir%"
mkdir "%output_dir%"
xcopy "%source_dir%*"  "%output_dir%" /e /c /i /q /-y

O problema é que acho a cópia lenta e queria saber se há algum comando de cópia disponível no Windows 2008 mais rápido que o xcopy? A origem e o destino estão na mesma unidade. Abaixo estão os argumentos que usamos ao copiar.

/e = copies directories and sub directories including empty ones.
/c = continues copying even if there are errors
/i = if destination does not exist destination is directory
/q = don't display filenames
/-y = confirm overwrite
    
por dmcgiv 15.08.2010 / 13:15

6 respostas

20

Apenas do ponto de vista de desempenho , xcopy ou robocopy fornecerá resultados semelhantes. Executei alguns testes em uma caixa SP2 do Windows Vista de 64 bits para fazer algumas comparações. Todas as cópias foram realizadas entre um disco interno Sata II de 7200 RPM e uma unidade USB 2.0 externa ou na mesma unidade interna, onde indicado. Nenhuma configuração especial foi feita (faça sua própria opinião se isso invalidar / valida o teste), apenas para inserir o comando em um arquivo em lote a ser executado. O PowerShell foi usado para capturar os horários de início e término. Depois de alguns passes aqui estão as médias das ferramentas que joguei:

Arquivo: 732,909,568 bytes (698 MB), 1 arquivo ISO copiado para um diretório diferente no mesmo disco interno.

copy      6 secs (ex. copy G:\folder1\* G:\folder2\)
xcopy     6 secs (ex. xcopy G:\folder1 G:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ G:\folder2 /E /NP)
teracopy 28 secs (ex. TeraCopy.exe Copy G:\folder1\ G:\folder2\)
fastcopy 19 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=G:\folder2)  

Arquivo: 732,909,568 bytes (698 MB), 1 arquivo ISO copiado para um disco USB externo.

copy     36 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy    35 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 36 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 36 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 38 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)  

Arquivos: 45.039.616 bytes (42,9MB) 5 arquivos aleatórios copiados para um disco usb externo

copy      6 secs (ex. copy G:\folder1\* I:\folder2\)
xcopy     5 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy  6 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 12 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy  6 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Arquivos / diretórios: 1.087.180.800 bytes (1,01 GB), 27 arquivos / 8 diretórios copiados para um disco USB externo.

copy     *Not included in test
xcopy    57 secs (ex. xcopy G:\folder1 I:\folder2 /I /E /Y /R)
robocopy 58 secs (ex. robocopy G:\folder1\ I:\folder2 /E /NP)
teracopy 56 secs (ex. TeraCopy.exe Copy G:\folder1\ I:\folder2\)
fastcopy 60 secs (ex. fastcopy.exe /auto_close G:\folder1 /to=I:\folder2)

Este não é de forma alguma um teste exaustivo, mas apenas um rápido cenário do mundo real em algumas das ferramentas mais populares neste gênero mostra que você está bem seguro com xcopy ou Robocopy (apenas do ponto de vista do desempenho). Além disso, a opção Robocopy /NP (No Progress) economiza 0 tempo. Isso não significa que você não pode se beneficiar usando algo diferente de xcopy. Robocopy é um ótimo exemplo (de Wikipedia ):

Robocopy é notável por recursos acima e além da cópia integrada do Windows e do Comandos xcopy, incluindo o seguinte:

  • Capacidade de tolerar interrupções de rede e retomar a cópia onde previamente deixado de fora (arquivos incompletos são anotados com um carimbo de data correspondente a 1980-01-01 e conter um registro de recuperação para Robocopy sabe de onde continuar).
  • Capacidade de copiar corretamente atributos, informações do proprietário, dados alternativos fluxos, auditoria de informações e timestamps por padrão, sem o necessidade de numerosos muitas vezes esquecido comutadores de linha de comando.
  • Capacidade de copiar corretamente as ACLs NTFS, (quando / COPYALL fornecido) e para asseverar o "direito de backup" do Windows NT (/ B) para que um administrador possa copiar diretório inteiro, incluindo arquivos negada legibilidade ao administrador.
  • Persistência por padrão, com um número programável de automático tenta novamente se um arquivo não puder ser aberto.
  • Um modo "espelho", que mantém as árvores sincronizar, opcionalmente, excluindo os arquivos do destino que não são mais presente na fonte.
  • Capacidade de copiar grandes números de arquivos que, caso contrário, quebrariam o Utilitário XCOPY incorporado.
  • Um indicador de progresso no comando linha que atualiza continuamente.
  • Capacidade de copiar arquivos e pastas longos nomes com mais de 256 caracteres para um teórico 32.000 caracteres - sem erros.
por 15.08.2010 / 13:23
5

Eu geralmente uso:

robocopy source dest /E /MIR

ou alguma outra variante dos parâmetros - talvez /NFL /NDL /NS /NC /NP para corresponder ao "silêncio"

    
por 16.06.2009 / 14:16
1

Na verdade, ao eliminar a rede, você realmente restringiu seus testes. Você pode querer considerar o uso de um compartilhamento de rede, que será a maior parte do trabalho administrativo.

Além disso, você deve usar o FTP e pular o CIFS completamente. O Eseutil.exe é outro utilitário que você poderia usar lá. (um utilitário do Exchange que pode ser usado em outro lugar, junto com quatro dlls dependentes.)

Então eu gostaria de ver seus resultados.

    
por 07.10.2009 / 00:52
1

Eu uso o XCopy para o mesmo propósito. O que eu também fiz foi adicionar outro NIC para esse servidor e colocá-lo em uma sub-rede separada. Em seguida, fiz uma conexão direta com o servidor do qual estou transferindo arquivos. Dessa forma, as duas máquinas estão movendo os dados copiados através de uma sub-rede e os usuários ainda podem acessar através do segundo nic que está conectado diretamente à LAN.

    
por 07.10.2009 / 05:03
1

Você diz que a origem e o destino estão na mesma unidade, mas eles estão no servidor de compilação?

Se o servidor de compilação é o local da origem e do destino, considere mover uma pasta ou outra para outra unidade, talvez em outro controlador.

Se o servidor de compilação não for o local da origem e do destino (quedas de compilação nem sempre estão no servidor em que estão integradas), considere a criação de uma tarefa no servidor onde residem as pastas de origem e destino. Então apenas inicie essa tarefa remotamente.

    
por 07.10.2009 / 05:16
0

Eu tive que fazer várias cópias ao longo dos anos. Temos uma máquina Windows Server 2008 R2 que possui um único diretório com mais de 12M imagens dentro dela (aproximadamente 400 GB).

Obviamente, eu preferiria que não fosse um diretório tão grande, MAS:

  • O XCOPY manipula a cópia da pasta grande, mas falha ao tentar para seguir em frente a partir do grande diretório.
  • ROBOCOPY lida com a cópia sem problema e é muito mais legal experiência ao copiar na medida em que oferece melhores indicadores de progresso.
  • O
  • XCOPY em diretórios pequenos é mais rápido.

De qualquer forma, eu pensei em compartilhar minha experiência com eles por causa da natureza incomum do meu diretório realmente grande.

    
por 11.04.2016 / 19:30