Script de lote do Windows para fazer backup de dados

Os usuários de computador que cresceram com computadores Mac e Windows avançados podem não estar cientes disso, mas antigamente, há muito tempo, todos os computadores pessoais eram controlados por meio de uma interface de linha de comando. Sim, aquela caixa de comando desajeitada em sua máquina Windows costumava ser literalmente a única maneira pela qual a maioria das pessoas interagia com um computador. As interfaces de linha de comando dependiam muito de pequenos programas chamados de 'scripts', que eram coleções de comandos do sistema operacional usados ​​para realizar tarefas comuns.

Embora as interfaces gráficas de usuário dos PCs de hoje sejam anos-luz mais sofisticadas e fáceis de usar do que as antigas linhas de comando, ainda existem usos para o método mais antigo de controlar seu computador. Um dos aplicativos mais comuns e adequados para um script de linha de comando é o backup de dados. Os scripts de linha de comando podem ser automatizados para serem executados a qualquer momento sem nenhuma interação humana e têm poucas limitações. O melhor de tudo - eles são parte integrante do sistema operacional Windows.

Por que scripts de linha de comando?

Por que usar um script de linha de comando quando existem programas de backup comerciais e gratuitos por aí? Bem, os scripts de linha de comando têm várias vantagens exclusivas. Aqui estão alguns deles:

  • Comandos Nativos : Qual a melhor maneira de fazer backup dos dados do que usando as funções disponibilizadas pelo programa que cria os dados? Quer seja o próprio sistema operacional por meio de um comando simples de cópia de arquivo ou um comando de banco de dados para produzir um arquivo binário restaurável, o programa de origem sabe melhor como fazer o backup de si mesmo.
  • Controle final : Como um script de linha de comando segue um procedimento simples passo a passo, você sabe exatamente o que está acontecendo e pode facilmente modificar o comportamento.
  • Rápido : Uma vez que tudo é um comando nativo, nada está sujeito a interpretação. Novamente, você está usando comandos fornecidos pelo próprio programa, portanto, a sobrecarga é reduzida ao mínimo.
  • Poderoso : Ainda estou para ver uma tarefa de backup que não pode ser realizada por meio de um script de linha de comando ... e fiz algumas coisas funky. Embora você possa ter que fazer alguma pesquisa e tentativa e erro se tiver necessidades realmente exclusivas, normalmente as funções e recursos integrados da linguagem de script que você está usando são mais do que suficientes.
  • Grátis e Flexível : Obviamente, um script de linha de comando não custa nada (fora do tempo para desenvolvê-lo), então você pode copiar seus scripts para qualquer número de máquinas e sistemas com pouco ou nenhum tempo ou custo. Compare isso com o custo de aquisição de licenças para software de backup em vários servidores e / ou computadores desktop.

Uma visão geral rápida do script de lote de backup

A maioria das pessoas nunca aprendeu a usar scripts de linha de comando e isso é considerado uma espécie de “arte negra”. No entanto, é realmente uma coisa muito simples de aprender. Para demonstrar o poder da linha de comando, estou fornecendo um script de lote simples do Windows que você pode usar para fazer backup de seus dados importantes. Este script configurável e personalizável não requer nenhum conhecimento (ou vontade de aprender) da linguagem de script em lote do Windows, mas se decidir que deseja aprender mais sobre scripts em lote do Windows, você descobrirá que este script é um bom ponto de partida .

O que o script de backup faz:

  1. Cria backups incrementais completos ou diários (veja a definição abaixo) de arquivos e pastas que você especifica em um arquivo de texto de configuração separado (veja abaixo).
    • Quando uma pasta é nomeada, essa pasta e todas as subpastas são copiadas.
    • Quando um arquivo é nomeado, apenas esse arquivo é copiado.
  2. Compacta (zips) os arquivos de backup. Depois que todos os arquivos para backup são copiados, eles são compactados para economizar espaço. O 7-Zip deve estar instalado em seu sistema para que isso funcione.
  3. Data o arquivo compactado e o move para um local de armazenamento. Depois que os arquivos de backup são compactados, o arquivo resultante recebe um nome de arquivo de acordo com a data atual e, em seguida, é movido para um local de armazenamento configurado, como uma unidade externa ou local de rede.
  4. Limpa depois de si mesmo. Depois que todas as tarefas são concluídas, o script em lote limpa todos os arquivos temporários que criou.

Requisitos:

Windows 2000 / XP / 2003 / Vista ou mais recente

7-Zip (é grátis)

Arquivo de configuração:

O arquivo de configuração é simplesmente um arquivo de texto que contém arquivos e pastas para backup, inserido um item de backup por linha. Este ficheiro devo ser nomeado “BackupConfig.txt” e estar localizado na mesma pasta que o script de backup. Aqui está um exemplo de arquivo BackupConfig.txt (observe que o caractere “#” na primeira linha indica que a linha é um comentário; os comentários são sempre ignorados quando o script é executado):

# Digite os nomes dos arquivos e pastas, um por linha.

C: Documentos e configuraçõesJason FaulknerDesktop C: Documentos e configuraçõesJason FaulknerMeus documentos Arquivos importantes C: ScriptsBackupScript.bat

O exemplo acima faria backup da área de trabalho do usuário do Windows Jason Faulkner (e de todas as pastas na área de trabalho), a pasta chamada “Arquivos importantes” dentro de Meus documentos (e todas as pastas dentro de “Arquivos importantes”) e o arquivo “BackupScript.bat” dentro o diretório C: Scripts.

Tipos de backups:

  • Backup completo: uma cópia completa de todos os arquivos e pastas (incluindo subpastas) são incluídos no backup.
  • Backup incremental: quando uma pasta é fornecida, apenas os arquivos criados ou modificados no data atual são

    backup. Quando um arquivo é fornecido, sempre é feito o backup, independentemente de quando foi modificado.

O script de lote do Windows para backup de dados

Quero enfatizar que este script é muito básico, pois tudo o que ele faz é criar backups utilizando uma cópia de arquivo simples. Existem algumas opções de configuração que você pode definir:

  • O local de armazenamento de backup onde os arquivos de backup compactados resultantes são armazenados.
  • O dia da semana em que o backup completo é executado (qualquer outro dia executaria um backup incremental).
  • Local de onde o 7-Zip está instalado em seu computador. O script é definido automaticamente para procurar no local padrão.

Se você tiver alguma sugestão ou solicitação de recurso, comente abaixo. Eu realmente adoraria fazer um artigo de acompanhamento a este post que apresenta um script atualizado com base na entrada do leitor. Se precisar de instruções sobre como “usar” este script ou configurar uma tarefa agendada, dê uma olhada nos links abaixo da fonte do script.

Sem mais delongas, aqui está:

Observação: Uma vez que as aspas não são exibidas corretamente abaixo (e, como resultado, podem bagunçar o script), incluí um link de texto simples abaixo do script que você pode usar para obter uma fonte precisa para copiar.

@ECHO OFF REM BackupScript REM Versão 1.01, atualizado: 2008-05-21 REM Por Jason Faulkner (artigos [-at-] 132solutions.com) REM Executa backups completos ou incrementais de pastas e arquivos configurados pelo usuário. REM Uso --- REM> BackupScript SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION REM --- Opções de configuração --- REM Local da pasta onde você deseja armazenar o arquivo de backup resultante. REM Esta pasta deve existir. Não coloque um '' no final, ele será adicionado automaticamente. REM Você pode inserir um caminho local, uma letra de unidade externa (ex. F :) ou um local de rede (ex. \ Serverbackups) SET BackupStorage = C: Backup REM Em qual dia da semana você deseja fazer um backup completo? REM Digite um dos seguintes: Dom, Seg, Ter, Qua, Qui, Sex, Sab, * REM Qualquer dia da semana diferente do especificado abaixo executará um backup incremental. REM Se você inserir '*', um backup completo será executado todas as vezes. SET FullBackupDay = * REM Local onde o 7-Zip está instalado em seu computador. REM O padrão está em uma pasta, '7-Zip' no diretório Arquivos de programas. SET InstallLocationOf7Zip =% ProgramFiles% 7-Zip REM + --------------------------------------- -------------------------------- + REM | Não mude nada abaixo aqui, a menos que você saiba o que está fazendo. | REM + ------------------------------------------------ ----------------------- + REM Variáveis ​​de uso. SET exe7Zip =% InstallLocationOf7Zip% 7z.exe SET dirTempBackup =% TEMP% backup SET filBackupConfig = BackupConfig.txt Validação REM. SE NÃO EXISTIR% filBackupConfig% (ECHO Nenhum arquivo de configuração encontrado, ausente:% filBackupConfig% GOTO End) SE NÃO EXISTIR "% exe7Zip%" (ECHO 7-Zip não está instalado no local:% dir7Zip% ECHO Por favor, atualize o diretório onde 7-Zip está instalado. GOTO End) Variáveis ​​de backup REM. FOR / f "tokens = 1,2,3,4 delims = /" %% a IN ('date / t') DO (SET DayOfWeek = %% a SET NowDate = %% d - %% b - %% c SET FileDate = %% b - %% c - %% d) IF {% FullBackupDay%} == {*} SET FullBackupDay =% DayOfWeek% IF / i {% FullBackupDay%} == {% DayOfWeek%} (SET txtBackup = SET completo swXCopy = / e) ELSE (SET txtBackup = SET incremental swXCopy = / s / d:% FileDate%) ECHO Iniciando a cópia de arquivos. SE NÃO EXISTIR "% dirTempBackup%" MKDIR "% dirTempBackup%" FOR / f "skip = 1 tokens = *" %% A IN (% filBackupConfig%) DO (DEFINIR Atual = %% ~ A SE NÃO EXISTIR "! Atual! "(ECHO ERROR! Not found:! Current!) ELSE (ECHO Copying:! Current! SET Destination =% dirTempBackup%! Current: ~ 0,1! %% ~ pnxA REM Determine se a entrada é um arquivo ou diretório. IF "%% ~ xA" == "" (Diretório REM. XCOPY "! Atual!" "! Destino!" / v / c / i / g / h / q / r / y% swXCopy%) ELSE (Arquivo REM. COPY / v / y "! Atual!" "! Destino!"))) ECHO Concluída a cópia dos arquivos. ECO. SET BackupFileDestination =% BackupStorage% Backup_% FileDate% _% txtBackup% .zip REM Se o arquivo de backup existir, remova-o em favor do novo arquivo. IF EXIST "% BackupFileDestination%" DEL / f / q "% BackupFileDestination%" ECHO Compactando arquivos de backup. (Nova janela) REM Compactar arquivos usando 7-Zip em um processo de prioridade mais baixa. INICIE "Compactando Backup. NÃO FECHE" / belownormal / aguarde "% exe7Zip%" a -tzip -r -mx5 "% BackupFileDestination%" "% dirTempBackup%" ECHO Compactação dos arquivos de backup concluído. ECO. ECHO Limpando. SE EXISTIR "% dirTempBackup%" RMDIR / s / q "% dirTempBackup%" ECHO. : Fim ECHO concluído. ECO. ENDLOCAL

A fonte em texto simples está disponível aqui: backup

Se precisar de ajuda para começar a implementar este script, aqui estão alguns links para ajudá-lo:

  • Como criar um arquivo de lote
  • Como criar uma tarefa agendada do Windows

Este é o mesmo script que uso para fazer backup do meu computador diariamente (com algumas modificações, é claro), então sei que funciona muito bem. Eu espero que você ache isso útil.

Aproveitar!