Forum Pplware
Ajuda! Comando para passar último backup completo para disco externo - Versão de Impressão

+- Forum Pplware (http://forum.pplware.com)
+-- Fórum: Mais Tech (/forumdisplay.php?fid=11)
+--- Fórum: Programação e Web (/forumdisplay.php?fid=16)
+--- Tópico: Ajuda! Comando para passar último backup completo para disco externo (/showthread.php?tid=11728)

Páginas: 1 2


Ajuda! Comando para passar último backup completo para disco externo - trigoana - 27-05-2012 02:16

Boas Tardes a todos.

Será que alguém me poderia ajudar a criar um script para passar a cópia dos últimos backups completos que tenho numa pasta de rede para um disco externo?
No meu caso, semanalmente agendei um backup completo da pasta informatica e da pasta comercial, para uma pasta "backup_geral" do NAS e cujo resultado final é um ficheiro com o nome da tarefa e a data em que foi criado, por exemplo bck_comercial_20120520(completo).zip e outro bck_informatica_20120520(completo).zip

A minha questão é que num mês existem 4 backups completos do mesmo destino, mas com datas de modificação diferentes... e eu só quero passar para o disco externo, o backup completo mais recente.

A solução imediata que arranjei foi com o xcopy:
xcopy \\Nas\backup_geral\*completo*.zip I:\ /D:05-20-12
copiar todos os ficheiros cujo extensão seja .zip e no nome tenha a palavra "completo" e cuja data seja igual ou posterior a 20-05-12.

Mas, a minha questão é que quero um comando que identifique automáticamente o último backup completo feito, sem que seja preciso, todo o mês, especificar o intervalo a procurar.

Smile Será que alguém arranja solução?


RE: Ajuda! Comando para passar último backup completo para disco externo - trigoana - 28-05-2012 18:03

Ninguém aqui vai muito "à bola" com programação... estou mesmo a vêr Big Grin

Pois bem. Vou mesmo ter que me valer dos meus comandos em Dos.

Será que me expressei mal, e não percebem o que quero fazer? Ou têm todos a mesma questão que eu tenho?

Tongue


RE: Ajuda! Comando para passar último backup completo para disco externo - progster - 28-05-2012 19:20

Nem todos têm o mesmo nível de conhecimentos. Big Grin
Uma das vantagens dos fóruns é que mais cedo ou mais tarde logo "aparece" alguém que te consegue desenrascar.


RE: Ajuda! Comando para passar último backup completo para disco externo - trigoana - 28-05-2012 20:45

Hum! Cool

Então fico à espera de quem me desenrasque Wink


RE: Ajuda! Comando para passar último backup completo para disco externo - brunoantunes - 31-05-2012 19:02

(27-05-2012 02:16)trigoana Escreveu:  No meu caso, semanalmente agendei um backup completo da pasta informatica e da pasta comercial

Se agendaste semanalmente por nao agendas um mensal tambem?

Podes tambem trocar a parte do mes e ano para dinamico ficando '/d:%mm%-20-%yy%

Julgo que assim o mes e o ano ficam dinamicos.


RE: Ajuda! Comando para passar último backup completo para disco externo - trigoana - 02-06-2012 18:43

(31-05-2012 19:02)brunoantunes Escreveu:  Se agendaste semanalmente por nao agendas um mensal tambem?


Porque não se justifica... no meu caso todos os domingos são para backups totais, por isso no fim do mês há sempre um backup mensal (o último semanal) Wink

É esse último backup que quero passar para disco externo, todos os Meses.

Eu uso o Cobian Backup para agendar os backup, já pensei em programar o cobian para fazer o backup para o Nas e ao mesmo tempo para o disco externo. Mas como quem fica encarregue de os passar para o disco externo pode não se lembrar de ligar o disco... isso podia dar raia.

Por isso queria criar um executavél que qualquer pessoa que liga-se o disco externo podesse correr, porque o próprio comando iria procurar o último backup e guardar no disco.

Alias bastava-me uma linha de código que me devolvesse a data de hoje menos 6 dias, assim eu garantia que ía sempre procurar o último backup existente. Pois só ao 7 dia é que é criado um novo backup.

(31-05-2012 19:02)brunoantunes Escreveu:  Podes tambem trocar a parte do mes e ano para dinamico ficando '/d:%mm%-20-%yy%

Em Dos, ele não reconhece esse parâmetro, e tb não é bem isso... a funcionar este comando iria copiar todos os ficheiros completos que tenho independentemente do mês e ano... e eu só quero o último backup.


Recapitulando com outro exemplo...
FICHEIROS NO NAS:
1º backup completo - data 06/05/12
2º backup completo - data 13/05/12
3º backup completo - data 20/05/12
4º backup completo - data 27/05/12

Se eu hoje ligasse um disco externo ao Nas, só iria querer passar para este disco externo o último backup (4º backup), que data de 27/05/12.

Estão a perceber o meu dilema? Eu não quero eliminar nada do Nas, quero só passar para disco externo o último backup, que sei ser o ficheiro com a data mais recente.

Sad Tá difícil, eu sei, a ideia parece simples feita à mão, mas criar um automatismo é que me está a levar a melhor...

Mas mesmo assim, Obrigada BrunoAntunes, pela dica.


RE: Ajuda! Comando para passar último backup completo para disco externo - brunoantunes - 04-06-2012 02:04

Código:
echo %DATE%

este codigo devolve-te a data actual

Código:
set day=%date:~0,2%
echo %day%
este codigo devolte-te o dia actual

que tal desta forma:

Código:
set day=%date:~0,2%
set month=%date:~3,2%
set year=%date:~-4%

If %day% > 20 then
copy \\Nas\backup_geral\*%year%%month%%day%*.zip I:\

ou se quiseres algo mais directo
Código:
If %date:~0,2% > 20 then
copy \\Nas\backup_geral\*%date:~-4%%date:~3,2%%date:~0,2%*.zip I:\

Parece-me que assim tens o que pretendes?


RE: Ajuda! Comando para passar último backup completo para disco externo - trigoana - 06-06-2012 01:19

Fantástico BrunoAntunes, é uma excelente dica

Acho que estamos a chegar lá.

Se me explicares como subtraio ao %date% uns 7 dias... fica o assunto arrumado.

Usei esta opção, estive a pesquisar como se formata a data para o modelo mm-dd-aa:
xcopy \\Nas\backup_geral\*completo*.zip I:\ /D:%DATE:~3,2%-%DATE:~0,2%-%DATE:~8,4%

Com esta opção copio todos os arquivos criados no próprio dia, mas se conseguir fazer algo como:

Diahoje=%DATE%
DataBK=Diahoje-7dias

posso substituir a DATE pelo DATABK.

Como é que se subtrai uma data? Big Grin
Acho que encontrei como adicionar ou subtrair dias aqui neste site:
http://stackoverflow.com/questions/355425/date-arithmetic-in-dos-scripting

Mas vou deixar para amanhã... já estou a vêr "demasiado código à frente"... lol


RE: Ajuda! Comando para passar último backup completo para disco externo - brunoantunes - 07-06-2012 12:02

Que confusao de código nesse site.

Basta adicionar '/A' para aritmética.

Exemplo:
Citar:set yy=%date:~6,2%
set mm=%date:~3,2%
set dd=%date:~0,2%

set /A day=%dd% - 7

echo %day%/%mm%/%yy%



RE: Ajuda! Comando para passar último backup completo para disco externo - trigoana - 07-06-2012 15:11

Olá!

Para datas acho que ele não entende essa aritmética.
Para o dia de hoje, com o código que colocaste devolve-me a data
0/06/20 Unsure



(07-06-2012 12:02)brunoantunes Escreveu:  Que confusao de código nesse site.

Basta adicionar '/A' para aritmética.

Exemplo:
Citar:set yy=%date:~6,2%
set mm=%date:~3,2%
set dd=%date:~0,2%

set /A day=%dd% - 7

echo %day%/%mm%/%yy%