terça-feira, 24 de abril de 2007

Backup automático de disco USB (pen drive)

Hoje em dia toda a gente tem uma pen drive para levar os seus ficheiros de um lado para o outro. E muitas vezes está lá trabalho importante. Mas impõe-se uma pergunta: o que acontece se se perde a pen drive? Ou se esta se avaria? Quem é que faz backups regulares da pen drive? Muito pouca gente!

Pessoalmente tenho por hábito fazer um backup cerca de uma vez por semana. Quando o trabalho é muito, faço backup mais vezes. Mas já por duas vezes as avarias me fizeram perder as versões mais recentes. E isto chateia.

Por isso aqui há uns dias decidi "coçar esta comichão" e resolver o problema de forma mais sistemática: arranjei maneira de fazer um backup automático cada vez que ligo a pen drive a um computador.

(sim, eu sei que há software específico para isto, mas que querem, apeteceu-me fazer mais um)

A receita é relativamente simples: um script (DOS batch file) que faz o backup, um ficheiro de definição de autorun e já está.

1. O script de backup - Basta instalar, na root-folder da pen drive, um ficheiro chamado penbackup.bat, com o seguinte conteúdo:
explorer .
set BACKUPDIR="%USERPROFILE%\Pen Backup"
if not exist %BACKUPDIR% mkdir %BACKUPDIR%
xcopy . "%USERPROFILE%\Pen Backup" /E /C /H /Y /D

2. O ficheiro de configuração de autorun - basta instalar, no mesmo sítio, um ficheiro chamado autorun.inf com o seguinte conteúdo:
[autorun]
action=Backup e Visualização do conteúdo
open=penbackup.bat
icon=autorun.ico (opcional)
label=PenDrive do Fernando
3. [opcional] Um ícone para a pen drive - basta colocar no mesmo sítio um ficheiro de formato ICO (ícones do Windows)

Uma das coisas interessantes desta solução é que, sem trabalho nenhum, o XCOPY copia apenas aquilo que foi alterado, o que faz com que o backup seja geralmente rápido.

O que acontece? Quando se liga a pen drive ao computador, salta-nos uma janelita como esta aqui ao lado e basta escolher a primeira opção para abrirmos a pasta e, ao mesmo tempo, fazermos um backup para o nosso computador.

Os leitores mais atentos talvez descubram rapidamente alguns problemas nesta solução, que terão que ser resolvidos noutra versão da "receita":
  • segurança: cuidado com os computadores onde se liga a pen drive - como o backup é automático podemos deixar, inadvertidamente, uma cópia de todos os nossos ficheiros num computador alheio
  • sistema operativo - isto está feito só para Windows :-(
  • estética - uma janelinha preta que se abre e fecha automaticamente, é feia
Se isto servir para alguém, fico satisfeito. Se entretanto alguém arranjar uma coisa melhor, avise!

16 comentários:

  1. Que bonito... Faz-me lembrar qd eu instalava PC's nos clientes da Xerox (grandes bombas com um processador i8086, 512K de RAM e uns extraordinários 20MB de disco). Naqueles idos de meados da década de 80 do século passado, as máquinas vinham "directamente" do fabricante de hardware sem nada - nada mesmo - instalado de base. De modos que depois de se desencaixotar a máquina e ligar os cabinhos todos, tinha que se efectuar uma série de operações em sequência até se poder fazer alguma coisa com aquilo - formatar o disco a baixo nível, criar partições, formatar as partições, instalar o SO base, instalar os ficheiros de comandos externos e finalmente instalar o software do cliente, se o houvesse.

    Ao fim de meia-dúzia de operações destas, e como a sequência era sempre a mesma, resolvi-me a escrever um longo script de batch que practicamente fazia todo o processo - inclusivé inserir automáticamente inputs do utilizador - coisa praí com umas 5 ou 6 páginas A4 de comandos DOS, e que durava umas boas 3 ou 4 horas a executar. Assim, o meu trabalho a partir daí era ir aos clientes, instalar o hardware e ficar 3 ou 4 horas à espera, só a trocar de disquetes qd o meu batch pedia, aproveitando eu para lêr o jornalzinho do dia - normalmente A Bola ou o Record, naquele tempo ainda não havia "Apitos Dourados" de modo que nem sempre ganhava o mesmo e as notícias desportivas eram mais interessantes...

    Claro está que começaram a chover telefonemas na Xerox de clientes indignados que reclamavam porque "este gajo vem para aqui uma manhã inteira e a única coisa que faz é lêr o jornal"...

    Bom, tudo isto para dizer que uma maneira simples de evitar que este processo copie coisas para onde não deve é colocar uma linha no início do .bat, por ex.

    if not exist "%USERPROFILE%\amota.id" goto end

    e no final do .bat mais uma linha

    :end

    Agora é só colocarmos no nosso "home directory" dos computadores em que queremos que o backup seja efectuado um qq ficheiro com o nome igual ao que referimos naquela 1ª linha - no meu caso, escolhi "amota.id". Obviamente este ficheiro pode inclusivé ser um ficheiro vazio, pois só é testada a sua existência, não o seu conteúdo. Está claro que todas as outras preocupações de segurança se mantêm...

    É como dizia o outro, deêm-me um IF e um GOTO e eu moverei o mundo...

    ResponderEliminar
  2. Já agora, porque às vezes nestas coisas da informática acontecem erros (é verdade, já vi acontecer algumas vezes...), pode-se aprimorar um pouco a coisa para no caso (improvável) de alguma coisa correr mal sermos notificados do erro:

    @echo off
    if not exist "%USERPROFILE%\amota.id" goto end
    set BACKUPDIR="%USERPROFILE%\Pen Backup"
    if not exist %BACKUPDIR% mkdir %BACKUPDIR%
    xcopy . "%USERPROFILE%\Pen Backup" /E /C /H /Y /D
    if errorlevel 5 goto diskerror
    if errorlevel 4 goto lowmemory
    if errorlevel 2 goto abort
    if errorlevel 1 goto nofiles
    if errorlevel 0 goto end

    :diskerror
    echo ERROR - Disk write error occurred.
    goto exit

    :lowmemory
    echo ERROR - Insufficient memory to copy files or invalid drive or command-line syntax.
    goto exit

    :abort
    echo ERROR - The user pressed CTRL+C to terminate the copy operation.
    goto exit

    :nofiles
    echo ERROR - No files were found to copy or the system cannot find the file specified.
    goto exit

    :exit
    pause

    :end
    explorer .
    @echo on

    (pus o explorer no fim para haver menos confusão com as janelinhas...)

    E depois há os Control-Freaks, que não só querem saber o que correu mal mas tb o que correu bem, e quando e onde!!! Esta versão dá-lhes o que eles querem...

    @echo off
    echo . >> penbackup.log
    echo ======= PEN DRIVE BACKUP ======= >> penbackup.log
    date < cr >> penbackup.log
    time < cr >> penbackup.log
    vol "%SYSTEMDRIVE%" >> penbackup.log
    echo -------------------------------- >> penbackup.log

    if not exist "%USERPROFILE%\amota.id" goto end
    set BACKUPDIR="%USERPROFILE%\Pen Backup"
    if not exist %BACKUPDIR% mkdir %BACKUPDIR%
    xcopy . "%USERPROFILE%\Pen Backup" /E /C /H /Y /D >> penbackup.log
    if errorlevel 5 goto diskerror
    if errorlevel 4 goto lowmemory
    if errorlevel 2 goto abort
    if errorlevel 1 goto nofiles
    if errorlevel 0 goto exit

    :diskerror
    echo ERROR - Disk write error occurred. >> penbackup.log
    goto exit

    :lowmemory
    echo ERROR - Insufficient memory to copy files or invalid drive or command-line syntax. >> penbackup.log
    goto exit

    :abort
    echo ERROR - The user pressed CTRL+C to terminate the copy operation. >> penbackup.log
    goto exit

    :nofiles
    echo ERROR - No files were found to copy or the system cannot find the file specified. >> penbackup.log
    goto exit

    :end
    echo WARNING - This is not a backup computer. >> penbackup.log
    goto exit

    :exit
    echo . >> penbackup.log
    echo ==== END OF PEN DRIVE BACKUP ==== >> penbackup.log
    explorer .
    start penbackup.log
    @echo on

    E pronto, assim ficam com um log na root da pen (penbackup.log) com o detalhe de todos os backup que foram feitos. Se não o querem visualizar sempre, retirem a ultima linha antes do @echo on...

    Podem-se fazer mais coisas, por ex., se se apagar um ficheiro na pen o script *não* apaga a cópia do backup. Isso é relativamente simples de fazer, mas vou acabar por aqui se não não faço mais nada hoje...

    P.S. Se só de olharem para o script notarem alguma coisa estranha, ou se ao testarem o raio da janelinha preta não desaparecer (deêm dois "enters" que ela vai embora...) abram um editor de texto normalíssimo, deêm um "enter" (aka "carriage-return") e gravem o ficheiro na root da pen com o nome "cr" (sem extensão nenhuma). É só para simular o input do utilizador...

    ResponderEliminar
  3. Este comentário foi removido pelo autor.

    ResponderEliminar
  4. Muito bom o post!

    Outra forma de não fazer o backup no micro errado é colocar no código:

    if not "%COMPUTERNAME%\nome_do_micro" goto end

    ResponderEliminar
  5. Em linux há uma maneira fácil de implementar isso via shell script também. Pelo menos no Ubuntu (e talvez no Gnome em geral) existe uma opção algures nas preferências para executar um script ao ligar uma pen, bastando colocar um ficheiro autorun.sh executável na raíz da pen. Surge uma caixa para confirmarmos a execução do script a cada vez que se liga a pen.

    ResponderEliminar
  6. Cara que otimo este post me ajudou muito...gostaria de saber se vc pode me ajudar tenho um pen drive e tenho um software dentro dele e preciso que quando eu plugar o pen drive na USB ele automaticamente execute o software sera que voce poderia me ajudar...desde ja agradeço

    ResponderEliminar
  7. boas...

    Ja agora...alguem sabe forma de fazer um script que faça backup da pasta "meus documentos" para a pen..sem gerar kk tipo de output e janelinhas pretas?

    cumprs,

    ResponderEliminar
  8. oi estive a ler isto e tenho uma duvida não percebo nada de scriptss portanto gostava k me dissesses quais os softwares k fazem isso, e como funcionam... eu quero um simples uma coisa que assim que conecte a pen ao computador este pura e simplesmente copie os ficheiros para o computador.. dava-me imenso jeito... se puderes ajudar-me

    davvid_fr@hotmail.com

    PS: se nem se der pelo programa a fazer o backup ou copia melhor...lol

    ResponderEliminar
  9. Também gostava de ter um programa que fizesse as copias dos ficheiros mais importantes para a minha USB, mas sem bats ou janelas pretas ou o computador parar.

    Alguem conhece uma solução

    firstaim22@luxmail.com

    Obrigada

    ResponderEliminar
  10. Backup automático para pen drive Borsatti

    Obs. funciona no XP e Vista já testei !



    Veja como funciona!

    Quando espeto o pendrive no PC ele verifica se o PC é o meu, caso contrário ele pergunta o que fazer!

    Isso impede que se eu espetar em um PC que não seja o meu, os dados sejam copiados para ele !



    Veja como fiz isso !



    Crie um arquivo chamado autorun.inf e salvei ele no pendrive !

    Nele coloquei as seguintes linhas

    =========================================================================================

    [autorun]

    action=Sistema de Backup Borsatti

    open=penbackup.bat

    icon=autorun.ico

    label=PenDrive do Borsatti

    =========================================================================================

    OBS: autorun.ico pode ser qualquer icone ,mas tem de estar salvo no pendrive com o nome de

    autorun.ico ,caso não queiram um icone removam esta linha

    =========================================================================================

    Crie um arquivo chamado penbackup.bat e salve ele no pendrive !

    E coloquei as seguintes linhas

    =========================================================================================

    @echo OFF

    color 1a

    echo ======= PEN DRIVE BACKUP ======= >> penbackup.log

    ECHO %date:~4,2%-%date:~7,2%-%date:~-4% >> penbackup.log

    TIME/T >> penbackup.log

    REM vol "%SYSTEMDRIVE%" >> penbackup.log

    echo -------------------------------- >> penbackup.log

    set BACKUPDIR="%USERPROFILE%\PenBackup"



    :GRAVA

    if not exist "%USERPROFILE%\BACK.SATTI" goto NAO

    if not exist %BACKUPDIR% GOTO NAO

    if exist %BACKUPDIR% GOTO TEM



    :FORCA

    if not exist %BACKUPDIR% mkdir %BACKUPDIR%

    xcopy . "%USERPROFILE%\PenBackup" /E /C /H /Y /D >> penbackup.log

    REM xcopy . "%USERPROFILE%\PenBackup" /E /C /H /Y /D /N >> penbackup.log COPIA ARQUIVOS DE NOME CURTO TIPO TESTE DE CONEXÃO.TXT IRÁ FICAR TEST~1.TXT

    if errorlevel 5 goto diskerror

    if errorlevel 4 goto lowmemory

    if errorlevel 2 goto abort

    if errorlevel 1 goto nofiles

    if errorlevel 0 goto menu2



    :diskerror

    echo ERROR - ERRO NA GRAVACAO DO ARQUIVO. >> penbackup.log

    goto exit



    :lowmemory

    echo ERROR - MEMORIA INSUFICIENTE PARA COPIA DE ARQUIVO OU COMANDO INVALIDO DE SINTASE >> penbackup.log

    goto exit



    :abort

    echo ERROR - USUARIO PRESSIONOU CTRL+C PARA TERMINAR A OPERACAO. >> penbackup.log

    goto exit



    :nofiles

    echo ERROR - NAO HA ARQUIVOS PARA COPIA. >> penbackup.log

    goto exit



    :end

    echo WARNING - ESTE NAO E O COMPUTADOR CORRETO PARA BACKUP. >> penbackup.log

    goto exit



    :exit

    echo . >> penbackup.log

    echo ==== FIM DO BACU=KUP DO PEN DRIVE ==== >> penbackup.log

    pause

    REM explorer .

    REM start penbackup.log

    @echo on

    EXIT



    :NAO

    @echo OFF

    cls

    color 4F

    :ini

    echo.

    echo.

    echo.

    echo.

    echo.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    echo.@ ESTE PC NAO E SEU O QUE VC GOSTARIA DE FAZER? @

    echo.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    echo.

    echo.

    echo. OPCOES

    echo.

    echo.

    echo. (1) CRIAR UM BACKUP

    echo. (2) Sair

    echo.---------------------------------------------------------

    echo.

    :aff

    set /p opcao=****Digite a opcao--



    if %opcao% equ 2 goto ex

    if %opcao% equ 1 goto vb2



    :ex

    echo Saindo...

    echo Tem certeza que deseja sair do Teste???

    exit



    :vb2

    COPY/v /z penbackup.log "%USERPROFILE%"\BACK.SATTI

    echo AGUARDE CRIANDO BACKUP................

    goto FORCA

    pause



    goto menu2



    :menu2

    @echo OFF

    CLS

    color 2F

    echo.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    echo.@ BACKUP CRIADO O QUE VC QUER FAZER AGORA? @

    echo.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    echo.

    echo.

    echo. OPCOES

    echo.

    echo.

    echo. (1) IR PARA O PEN DRIVE

    echo. (2) VER O LOG DAS GRAVACOES

    echo. (3) ABRIR A PASTA DE BACKUP

    echo. (4) Sair

    echo.---------------------------------------------------------

    echo.

    set /p menu2=****Digite a opcao--



    if %menu2% equ 4 goto ex

    if %menu2% equ 3 goto APBK

    if %menu2% equ 2 goto VLGP

    if %menu2% equ 1 goto IPPD



    :APBK

    explorer "%USERPROFILE%\PenBackup"

    GOTO menu2

    :VLGP

    start penbackup.log

    GOTO menu2



    :IPPD

    explorer .

    GOTO menu2



    :TEM

    @echo OFF

    CLS

    color 6F

    echo.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    echo.@ JA TEM UM BACKUP NESTE MICRO O QUE VC QUER FAZER @

    echo.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    echo.

    echo.

    echo. OPCOES

    echo.

    echo.

    echo. (1) ABRIR ARQUIVOS NO PEN DRIVE

    echo. (2) VER O LOG DAS GRAVACOES NESTE PC

    echo. (3) ABRIR A PASTA DE BACKUP DESTE PC

    echo. (4) APAGAR BACKUP ANTIGO

    echo. (5) CRIAR UM NOVO BACKUP

    echo. (6) Sair

    echo.---------------------------------------------------------

    set /p menu3=****Digite a opcao--





    if %menu3% equ 6 goto ex

    if %menu3% equ 5 goto CNBK

    if %menu3% equ 4 goto APBK

    if %menu3% equ 3 goto APBK2

    if %menu3% equ 2 goto VLGP2

    if %menu3% equ 1 goto IPPD2



    :APBK2

    explorer "%USERPROFILE%\PenBackup"

    GOTO menu2

    :VLGP2

    CD %BACKUPDIR%

    start penbackup.log

    GOTO menu2



    :IPPD2

    explorer .

    GOTO menu2



    :CNBK

    GOTO FORCA



    :APBK

    @echo OFF

    @DEL "%USERPROFILE%\BACK.SATTI"

    @rmdir %BACKUPDIR% / S / Q

    PAUSE

    GOTO NAO

    __________________________________________________

    Quando espeto ele no pc exibe varias opções !

    Faça e confira !!!

    ResponderEliminar
  11. Muito obrigado, amigos!
    Após perder meu pen-drive em um local movimentadíssimo aqui de Brasília, resolvi procurar uma ferramenta de sincronismo e achei a AllWay Sync 'n' Go. Porém, passei os 20.000 arquivos da versão gratuita e foi quando achei esse ótimo tutorial aqui.
    Abraço!

    ResponderEliminar
  12. Boa noite! Tem um amigo meu que diz que o pessimista sempre tem uma copia de segurança... rs.
    Espetei meu pendrive na maquina de um cliente e ele simplismente "queimou"...
    tentei usar um pendrive do cliente e "misteriosamente" também parou de funcionar.
    ainda bem que eu tinha uma cópia dos arquivos espalhados pelos micros... rs.
    Mas esse arquivo bat ficou 10! problema quase resolvido!!!

    Parabéns.

    ResponderEliminar
  13. Pessoal, eu estou tentando fazer um backup ao contrário, isto é, do micro para o pen! então como descobrir em que letra esta o pendrive?

    ResponderEliminar
  14. http://batch-satti.forumeiros.com/index.htm?sid=3f17ffc535184f90f7e184decf00b015

    Waldemar dá uma olhada aqui !
    aqui tem tudo sobre batch scripts e backups !

    ResponderEliminar
  15. ou então instalam um software de sincronização chamado PureSync, é freeware, e tb o fazem automaticamente mais facilmente apenas nos computadores onde o tiverem instalado (o software).

    ResponderEliminar
  16. Boas: A ideia é boa, mas por motivos de segurança, recomendo que desactivem o autorun ou na politica de grupo ou localmente (acreditem que é um conselho útil).

    ResponderEliminar