Comando ROBOCOPY para fazer um backup incremental


31

Estou impressionado com a documentação do ROBOCOPY. Quero fazer um backup incremental dos meus arquivos locais na unidade de rede (M). Quero que seja executado o mais rápido possível, sem arquivo de log e com o mínimo de texto possível na tela. Meus arquivos estão em algum lugar dentro de uma pasta (MyFolder) que possui muitas subpastas aninhadas. Por "incremental", quero dizer "apenas copie o que é novo ou alterado". Não quero excluir nenhum arquivo histórico no destino, mas se eu tiver alterado um arquivo, quero apenas a versão mais recente. E se eu não alterei um arquivo, não quero copiá-lo sobre o arquivo de backup existente. Abaixo está correto? (Executando o Win7 Enterprise.)

robocopy C:\MyFolder M:\MyFolder /z /np /xo /e

Por favor, não há sugestões para nada além de robocópia. Não tenho permissão para instalar nada. E eu não ligo para coisas de segurança. Eu tenho pessoas para isso (quer eu queira ou não). ;-)


1
Você precisa de uma opção / s ou / e para copiar subdiretórios.
— David Marshall

@DavidMarshall: oops. Eu realmente sabia disso. Adicionado. Então, eu estou bem agora?
— dmm

Sim. Eu tenho usado algo semelhante.
— David Marshall

Testando agora. Ainda há um monte de coisas sendo gravadas na tela. Como faço para me livrar dele, em execuções futuras?
— dmm

3
Uma opção que pode fazer uma grande diferença no desempenho é ter transferências multithread. /MT[:N] Eu tenho uma CPU de 4 núcleos, então normalmente uso algo entre 8 e 16 para o meu número de threads. Eu imagino 2-4 threads por núcleo. Você certamente deve testar com valores diferentes no seu hardware. O multithread ajuda mais quando você tem muitos arquivos pequenos. Se você tiver um pequeno número de arquivos grandes, isso não ajudará quase tanto.
— Zoredache

Respostas:


40

Estou usando com sucesso uma variante do seguinte script há alguns anos:

robocopy C:\source M:\destination /MIR /FFT /R:3 /W:10 /Z /NP /NDL

Parâmetros explicados

  • A /MIRopção (equivalente a /E /PURGE) significa "espelho" e é a opção mais importante. Ele considera sua pasta de origem como "principal", fazendo com que ela substitua quaisquer alterações no lado do destino, o que é uma configuração útil para um backup.

  • /FFTé uma opção muito importante, pois permite uma diferença de 2 segundos ao comparar registros de data e hora de arquivos, de modo que pequenas diferenças de relógio entre o computador e o dispositivo de backup não importam. Isso garantirá que apenas os arquivos modificados sejam copiados, mesmo que os horários de modificação não sejam exatamente sincronizados.

  • /R:3especifica o número de tentativas, se a conexão falhar, e /W:10especifica um tempo de espera de 10 segundos entre as tentativas. Essas são opções úteis ao fazer o backup em uma rede.

  • /Z copia arquivos no "modo de reinicialização", para que os arquivos parcialmente copiados possam ser continuados após uma interrupção.

  • /NPe /NDLsuprimir alguns saída de depuração, você também poderá adicionar /NS, /NC, /NFLpara reduzir ainda mais a quantidade de saída (ver a documentação para mais detalhes). No entanto, sugiro imprimir alguma saída de depuração durante as primeiras execuções, para garantir que tudo esteja funcionando conforme o esperado.

Parâmetros úteis adicionais mencionados por outros usuários

  • /XJDexclui "pontos de junção" para diretórios, links simbólicos que podem causar problemas como loops infinitos durante o backup. Veja os comentários de Brian para detalhes.

  • /MT[:N]usa multithreading e pode acelerar transferências de muitos arquivos pequenos. Para N, um valor de 2-4 vezes o número de núcleos deve ser feito em uma máquina normal. Comentado por Zoredache na pergunta original.

Edite em resposta ao comentário de Granger:

Se você realmente deseja manter os arquivos existentes no destino, mas não no lado da fonte, basta substituir a /MIRopção por /E. No entanto, eu sugiro usar /MIRquando você deseja usar o destino para backups incrementais. Caso contrário, todos os arquivos que foram renomeados ou movidos na fonte irão sobrecarregar o destino, o que significa que você recebe duplicatas. Normalmente, crio uma subpasta "backup" no destino que contém uma cópia 1: 1 da minha árvore de pastas de origem. Dessa forma, você ainda pode manter os arquivos históricos próximos à pasta de backup e removê-los ou reorganizá-los com segurança posteriormente.


Este comando permite copiar arquivos com permissões? robocopy C: \ fonte H: \ destino / MIR / FFT / R: 3 / W: 10 / Z / NP / NDL
— Shabeer Sher

4
Exceto / MIR (/ PURGE) excluirá os arquivos no destino que não existem mais na origem. A pergunta feita afirmou explicitamente que não era desejada.
— Granger

@ Shabeer Não, o Robocopy por padrão apenas copia dados (D), atributos (A) e registros de data e hora (T). Outros valores devem ser especificados com o parâmetro "/ copy: <value>", por exemplo, "/ copy: DATS" para incluir permissões da ACL. Mas como eu copio para um NAS baseado em Linux, isso não faz muito sentido para mim.
— pederpansen

1
@ Brian Obrigado pela dica. Nunca tive problemas com pontos de junção, mas acho que não vai doer evitá-los por precaução. Adicionado na minha resposta.
— pederpansen

1
@pederpansen: tende a acontecer ao copiar pastas de usuários (ou copiar uma unidade inteira). Normalmente, a pasta de dados do aplicativo é a culpada, pois possui um ponto de junção por motivos de compatibilidade de aplicativos. Tente executar "cd C: \ Users \ [USERFOLDER] \ AppData \ Local \ Application Data \ application data \ application data \" em um prompt de comando se desejar ver um caminho infinito de exemplo. Isso funciona mesmo no Windows 10.
— Brian

8

Eu gosto de usar o seguinte:

robocopy "C:\Users\<user>" "F:\robocopy\<user>" /XJD /R:0 /XA:SH /E /ZB /XO /XD "Downloads" "AppData" /LOG:robocopy.log /TEE

Eu executo isso como administrador para que o modo de backup ( /bopção) possa fazer cópias dos arquivos em uso.

Outras opções não relacionadas à natureza incremental do backup são:

/XD excluir diretórios do backup.

/XJD para excluir pontos de junção ("Minhas músicas").

/R:0 para definir a nova tentativa em tentativas com falha como 0.

/XA:SH pular arquivos ocultos e do sistema.

Para remover o máximo possível de informações de log, anexe as seguintes opções /NP /NS /NDL /NFL /NC.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.