Ajuda! Comando para passar último backup completo para disco externo
|
07-06-2012, 16:00
(Esta mensagem foi modificada pela última vez a: 07-06-2012 16:02 por brunoantunes.)
Mensagem: #11
|
|||
|
|||
RE: Ajuda! Comando para passar último backup completo para disco externo
Ora ele está a subtrair numero entao..Este código só é válido caso o dia seja acima de 7.
Para ele te dar 31/05/2012, tens de criar os meses. Estas a querer complicar. Porque queres subtrair 7 dias? Código: If %date:~0,2% > 23 then Se colocares este código a correr ele vai copiar o ficheiro da ultima semana. Nao precisas de mais verificacoes..Só tens de garantir que o código corre todos os dias entre o dia 23 e 31. |
|||
08-06-2012, 02:05
Mensagem: #12
|
|||
|
|||
RE: Ajuda! Comando para passar último backup completo para disco externo
Olá brunoantunes.
Desculpa, não tinha intenção de te confundir. Estou a tentar chegar o mais próximo do que pretendo. E sabes como é... estou a tentar perceber, à medida que vou experimentando Tens sido uma ajuda incansável tenho que o dizer... (07-06-2012 16:00)brunoantunes Escreveu: Ora ele está a subtrair numero entao..Este código só é válido caso o dia seja acima de 7. A questão de querer subtrair os 7 dias, era porque, assim teria a certeza que copiava o último backup da semana. E como o backup mensal é feito nos primeiros dias do mês, queria garantir isso mesmo. Mas já vi que tenho muito que fazer, assim pensei na seguinte estratégia, tendo em conta as tuas dicas: mm- vai ser a variável que diz-me o dia de hoje no formato mm (ex: 08) aa- vai ser a variável que diz-me o ano de hoje no formato aa (ex:12) mesbk - variável que irá corresponder ao mês anterior para o backup anobk - variável que irá corresponder ao ano anterior para o backup #INICIO CODIGO# Set mm=%DATE:~3,2% \*saber o mês actual formato mm*\ set aa=%DATE:~8,4% \*saber o ano actual*\ If %mm% == 1 then \*se o mês actual for Janeiro*\ set /a anobk=%aa% - 1 \*e como o ano backup é referente ao ano que passou vou subtrair 1 ao ano actual*\ set mesbk=12 \*e digo que o mês anterior é Dezembro*\ xcopy \\Nas\backup_geral\*completo*.zip I:\ /D:%mesbk%-28-%anobk% \*copio todos os ficheiros de backup do Nas para I, que foram criados a partir do dia 28 de Dez do ano anterior*\ Else \* senão se*\ If %mm% >= 2 then \*o mês for maior ou igual que dois (abrange de Fevereiro a Dezembro*\ set /a mesbk=%mm% - 1 \*o mês que quero é o anterior, daí menos 1 *\ xcopy \\Nas\backup_geral\*completo*.zip I:\ /D:%mesbk%-28-%aa% \*copio todos os ficheiros de backup do Nas para I, que foram criados a partir do dia 28 do mês anterior, mas deste ano*\ #FIM CODIGO# O meu problema com este código é a partir do else... Não sei se faltam {} ou se não posso estruturar assim. Além que usei o "==" para igual e o ">=" para maior e igual. E o >= não corre, será preciso algo mais? Será que ainda está comigo? E já agora recomendas alguns sites para aprender programação? Obrigada... pela ajuda! |
|||
08-06-2012, 12:32
(Esta mensagem foi modificada pela última vez a: 08-06-2012 12:36 por brunoantunes.)
Mensagem: #13
|
|||
|
|||
RE: Ajuda! Comando para passar último backup completo para disco externo
Porque razao o backup mensal é feito apenas no inicio do mes?
Eu percebo o teu código mas acho que estas a criar linhas desnecessariamente. Quando o backup semanal é criado, o nome contem o dia/mes/ano certo? Fica mais facil validar pelo nome do ficheiro. Se queres garantir a cópia sabendo exactamente o dia em que foi criado o backup, tens de criar um calendário primeiro. Depois tens de ver TODOS os Domingos do ano e ainda tens de garantir que este processo aconteca automaticamente TODOS os anos. Olha a quantidade de código que vais ter de criar. Mais vale comprar um software que faca isso. Se validares pelo nome ficas com menos linhas de código e como tal ficas com menor probabilidade de algo falhar. O simbolo '>=' nao existe para batch (ou pelo menos nao conheco), usa a string 'GEQ' (Greater than or EQual to). Site para aprender nao sei camarada. Eu nao sou programador, só fiquei interessado no teu tópico porque porque o script é em batch e na minha area de trabalho tenho de usar esta linguagem uma vez ou outra. Mas tens vários utilizadores aqui nesta area que te podem encaminhar. Edit: O 'Else' nao é necessario e podes usar parentesis '(' e ')' para inicio e fim. |
|||
11-06-2012, 22:59
Mensagem: #14
|
|||
|
|||
RE: Ajuda! Comando para passar último backup completo para disco externo
A questão de passar mensalmente o último backup para disco externo (backup mensal) é só para garantir que a quem estou a passar "a bola" toma atenção/responsabilidade de garantir o backup.
É só mera formalidade, porque os verdadeiros backups são feitos com a rotina do cobian... eu podia programar tudo de longe, mas é mais interessante criar um hábito a quem tem interesse em mantêr os backups seguros Já arranjei a forma de contornar a questão: #INICIO CODIGO# @ECHO OFF Set mm=%DATE:~3,2% set aa=%DATE:~8,4% If "%mm%" GEQ "02" ( set /a mesbk=%mm% - 1 xcopy \\Nas\backup_geral\*completo*.zip I:\ /D:%mesbk%-28-%aa% ) else ( set /a anobk=%aa% - 1 set mesbk=12 xcopy \\Nas\backup_geral\*completo*.zip I:\ /D:%mesbk%-28-%anobk% ) #FIM CODIGO# Olhando para o calendário, vejo que os últimos domingos não ocorrem antes de 28, logo coloquei no meu código o dia 28. Considerando que o responsável pelo backup tem os primeiros dias do mês do início do seguinte mês para fazer a passagem para disco (por regra não quero que passe do dia 5, ou de segunda, o que vier primeiro) Assim, o código que fiz atribui a mm a data do mês actual a aa o ano actual, depois se mm>=2 (se o mês actual foi igual ou maior que fevereiro) devolve que o mesbk(mês para backup) é o mês anterior (mm - 1), e faz a cópia de todos os ficheiros criados após 28 do mês anterior ao dia actual. Se o mês não for maior que 2 então trata-se de Janeiro logo o meu mês para backup tem de ser Dezembro do ano anterior, daí anobk=%aa%-1 e mesbk=12, e faz cópia dos ficheiro criados a 28 de Dezembro do ano anterior. Claro que se hoje(Segunda-11/06/12) colocar o código a correr, copia-me a série completa de 03/06/12 e esta última de 10/06/12, por isso a importância de não passar além dos primeiros dias da primeira semana do mês... Muito obrigada Bruno, deste-me umas dicas excelentes... sem as quais não chegava a este resultado... continua assim que tens talento |
|||
11-06-2012, 23:47
Mensagem: #15
|
|||
|
|||
RE: Ajuda! Comando para passar último backup completo para disco externo
hhhhmmm...tens uma falha camarada..este mes o ultimo domingo e' dia 24 e em Agosto o ultimo domingo e' dia 26
Vais usar este codigo manualmente todos os meses?Porque nao colocas automaticamente o script a correr? Eventualmente, se alguma parte do script der erro, a pessoa a quem passas a bola nao vai perceber o que ai tens. |
|||
12-06-2012, 23:24
Mensagem: #16
|
|||
|
|||
RE: Ajuda! Comando para passar último backup completo para disco externo
Hehe! Tanta falta de fé
Por isso tenho a regra de considerar os primeiros dias do mês para passar o backup para disco externo... para garantir que guardo o máximo do mês anterior. O último de dia de Junho calha a um sábado (30) logo o último backup a considerar é o que vai ser feito no Domingo 1 de julho não a 24 de junho. Em Julho o último dia do mês calha numa terça (31) vai-se considerar o último backup feito no domingo(29Jul) Em Agosto a empresa está fechada, logo ninguém mete disco... fica só o cobian a fazer o backup para o Nas Mas msm assim como o último dia do mês irá calhar numa sexta o backup de domingo que me interessa considerar é o do dia 2 de Setembro. Salta Agosto ... fazemos só em setembro, o último dia (30) calha a um domingo logo considera-se esse como o backup que vão passar para disco externo... e por aí em frente... O que me importa é que nos primeiros dias do mês habituem-se a guardar o backup... e com esta regra tenho sempre a garantia disso. Se por um acaso deixarem passar duas semanas é que vai ser... lol vão ter backups completos de duas semanas... mas isso tb garanti com 2 disco externos de 450Gb, que vão sendo alternados. O máximo dos backups não chega a 90Gb... por isso é preciso esquecerem-se muito até ao fim do ano A minha garantia está no servidor, e sou eu que garanto... isto é ´só para criarem-se hábitos... percebeste? No caso de erro de script, no script que fiz tem um aviso e gera relatório de erro... além de que a pessoa tem mesmo de verificar que os ficheiros foram criados e está tudo conforme... não vai ser só "põe a correr e esquece"...lol. Inté |
|||
« Mais Antigo | Mais Recente »
|
Utilizadores a ver este tópico: 1 Visitante(s)