sexta-feira, 12 de agosto de 2011

.BAT - Criar script de backup / cópia de arquivos

Ao termos a necessidade de copiar e/ou fazer backup, dependendo do volume de informações, isso leva certo tempo de dedicação que muitas vezes não dispomos.

Porém, podemos ganhar tempo automatizando essa tarefa, pensando nisso, irei descrever como criar um arquivo de lote, mais conhecido como ".bat".

Irei usar como exemplo a cópia do conteúdo do diretório "Meus documentos" e usuário "Administrador", sistema operacional Windows XP e pasta Backup criada em um HD externo idenficado como F:\.

1. Clique Iniciar, Executar e digite "notepad" para iniciar o Bloco de Notas, vamos iniciar nossa seqüencia de comandos inserindo "xcopy/e/h/d/v/y" sem aspas, ao final irei descrever a função de cada um.

2. Abra o Windows Explorer e navegue ate a pasta "Meus documentos" e copie o endereço de origem: "C:\Documents and Settings\Administrador\Meus documentos", no BN insira um espaço após o primeiro comando e cole a origem, entre aspas.

3. Insira um espaço após o caminho de origem e digite entre aspas duplas "F:\Backup".

4. Clique em Arquivo, Salvar e no final escolhido adicione a extensão .bat.

5. Agora é só executar o arquivo salvo e a cópia do conteúdo de "Meus documentos" estará disponível na pasta Backup.

Traduzindo:
xcopy: copia arquivos e arvores de diretórios
/e: copia diretórios e subdiretórios, inclusive os vazios
/h: copia arquivos ocultos e do sistema tambem
/d: copia os arquivos alterados durante ou após a data especificada. Se não for definida uma data, copia apenas os arquivos cujo tempo de origem seja mais novo do que o tempo de destino.
/v: verifica o tamanho de cada novo arquivo
/y: copia tudo, não solicitando confirmação de substituição

15 comentários:

  1. cada site mentirosos mas esse explicou realmente!!! as instruções funcionou conforme o esperado!!!

    ResponderExcluir
  2. Muito bom o comando, porém estou tendo dificuldade em um ponto.
    O meu arquivo "origem" nunca é modificado, já o destino sim! Meu objetivo é cada dia ter o arquivo origem copiado para o destino (pois não quero manter as alterações feitas no destino).
    Existe alguma solução para isso?

    ResponderExcluir
  3. Na verdade criei uma na gambiarra.. não sei se teria algo melhor...

    del /s /f /q "destino"
    xcopy "\origem" "destino" /e/h/d/v/y

    ResponderExcluir
    Respostas
    1. André,
      A ideia é exatamente essa quando realizamos backup, tudo é copiado para destino, ficando em origem os arquivos sem modificação até que ocorram alterações nestes.

      Excluir
    2. Vital, tenho uma pasta que gera backups e tenho um script que copia esses arquivos para outro servidor pra uma pasta compartilhada. Porém, eu gostaria que ele copiasse apenas o ultimo backup gerado. Usei o /d mas sem sucesso. Sabe como?

      Excluir
  4. Vital, também eu queria um script de backup que apagasse os backups mais antigos. Conhece algum modo? Obrigado!

    ResponderExcluir
  5. Se eu adicionar uma lista de aquivos na instancia *.*
    conseguirei copiar esta lista e não todos os aquivos da pasta de origem?

    ResponderExcluir
  6. Como faço com arquivos que mudaram de pasta e ainda mudaram de nome. Tentei fazer esse teste, e foi gerado mais uma pasta com o mesmo arquivo, resultando em um arquivo em uma pasta anterior e o mesmo arquivo numa pasta posteriormente modificado pelo nome.
    É possível fazer o backup, com essas alterações?
    Qual o comando?

    Um abraço.

    ResponderExcluir
  7. Mandou bem com o post! funcionou direitinho, valeu garoto

    ResponderExcluir
  8. tenho um Script ignora a exclusão dos arquivos que estão sendo utilizados por outros usuários via rede e não consigo fazer o bkp automatizado desses arquivos, você teria uma solução para mim?

    ResponderExcluir
  9. Pessoal, sou novo no forum e gostaria de uma ajuda com o seguinte cenário:
    Possuo 3 Pastas:
    Origem, Filtro e Destino, como monto um script (.bat) que copia para a pasta Filtro todos os novos arquivos da origem, e para pasta destino os que não estão na pasta Filtro.

    ResponderExcluir
  10. Como devo fazer para copiar somente os arquivos, ou seja, ignorando as pastas e subpastas?

    ResponderExcluir