none
Criar executável para mover todos os arquivos de uma pasta, menos o arquivo mais atual! RRS feed

  • Pergunta

  • Amigos, tenho um servidor de log instalado em uma maquina windows, e junto tenho um programa de backup chamado COBIAN. O cobian pega os aquivos gerados zipa e armazena.

    O que está acontecendo:

    São vários arquivos de texto sendo gerados 24h por dia e sem parar, aprox 100gb de texto a cada 2 dias. Os arquivos são divididos em no maximo 2gb.

    Sempre, sempre, sempre tem um arquivo sendo criado no momento.

    Eu preciso de um .bat ou algum executável que RECORTE todos os arquivos (menos o que está sendo criado no momento), e cole em outra pasta;

    e preciso, também, de um outro arquivo executável que exclua todos esses arquivos movidos, após o backup!

    segunda-feira, 26 de novembro de 2018 13:14

Todas as Respostas

  • Bom dia!!

    De uma olhada no executável "robocopy" que é nativo do windows e você pode realizar scritpt´s (.BAT, .vbs) chamado o mesmo.

    https://social.technet.microsoft.com/Forums/pt-BR/3f833af1-6d51-407b-84e9-db2aecc9a410/robocopy-arquivos-alterados?forum=w8serverpt

    Att;
    segunda-feira, 26 de novembro de 2018 13:31
  • Eduardo, bom dia!

    assim, eu não sou uma pessoa entendida de programação, fui dá uma olhada com esse robocopy e não me familiarizei com ele.

    Mas olha isso comigo:

    Se eu criar um .bat com isso:

    move /Y E:\Program Files (x86)\Syslogd\Logs\*.* E:\PastaCriacaoBackup

    Eu vou está movendo tudo de E:\Program Files (x86)\Syslogd\Logs para E:\PastaCriacaoBackup certo? é quase isso que eu quero. Para que fique 100% funcional, eu preciso que ele copiasse TUDO, menos o arquivo mais atual. Pois esse arquivo mais atual vai ser o arquivo que está aberto pelo servidor, e vai dá erro na hora de copiar/mover! Se você conseguir me ajudar somente com isso, vai resolver meu problema! Sobre a execução do .bat o meu software de backup é quem vai executar ele automaticamente, antes do backup

    Obrigado!

    segunda-feira, 26 de novembro de 2018 13:58
  • Eduardo... fui ler sobre o robocopy.... tentei montar isso:

    ROBOCOPY “E:\Program Files (x86)\Syslogd\Logs” “E:\PastaCriacaoBackup” /MOVE /E /R:2 /W:2 /MINAGE:1 /LOG+:”E:\log.txt” /TEE

    o que você me diz?

    segunda-feira, 26 de novembro de 2018 15:03
  • Boa tarde!!

    Na realidade você vai estar criando um arquivo em lotes (.bat), aonde o mesmo vai executar a sequencia de comandos que você queria. Não é necessário saber programar.

    Te aconselho a montar um ambiente de teste, aonde vc vai poder simular diversas situações do comando robocopy, antes mesmo de botar o mesmo em produção.

    Digite  no cmd  robocopy /? e verifique as diversas opções  que o comando tem.

    P.S Se não me engano, se ao executar o robocopy  com o parametro MOVE, e algum arquivo estiver sendo utilizado (no seu caso o arquivo do log atual), o robocopy não copia esse arquivo. (Será interessante vc colocar o parametro /LOG+  aonde o robocopy vai gerar um log do comando)
    Att;


    segunda-feira, 26 de novembro de 2018 15:49
  • /MOVE  vai mover os arquivos e subdiretórios.

    /E Não é preciso esse parâmetro pois vc esta utilizando o MOVE e não MOV.

    /R numero de repetições se a copia falhar.

    /W Tempo de espera entre as repetições das copias caso venha a falhar.

    /MINAGE Idade minina dos arquivo a serem movidos e exluidos.

    /LOG+ Gerar log no final do processo.

    /TEE Saída para a janela de console, como no log.

    Vc pode incluir o parametro /COPYALL (vai copiar todas as informações dos arquivos, como carimbo de data e hora e tb as permissões herdadas)

    Att;

    segunda-feira, 26 de novembro de 2018 16:09
  • Eduardo, quando eu deixo ele assim:

    robocopy "D:\teste 1\original" "D:\teste 1\backup" /MOVE /R:2 /E /W:2 /LOG+:"D:\teste 1\log.txt" /TEE

    o executável move tudo, inclusive a pasta "original" o que não seria interessante.

    se eu deixar ele sem o /E

    robocopy "D:\teste 1\original" "D:\teste 1\backup" /MOVE /R:2 /W:2 /LOG+:"D:\teste 1\log.txt" /TEE

    não acontece nada, dá incompatibilidade, no LOG

    se eu incluir o /E e o /COPYALL, o log diz que eu não tenho permissão, se eu executar como administrador, ele dá certo, porém, continua apagando a pasta "original"

    por ultimo, quando essa parte de cima estiver funcionando, quero incluir o /MINAGE:1 que porventura copiaria apenas os arquivos mais antigos que 1 dia!

    segunda-feira, 26 de novembro de 2018 18:30
  • Eduardo desse jeito deu certo:

    robocopy "D:\teste 1\original" "D:\teste 1\backup" /MOV /R:2 /E /COPYALL /W:2 /LOG+:"D:\teste 1\log.txt" /TEE

    claro que se executar como administrador!

    agora, vou inserir o /MINAGE:1 para que ele mova apenas os arquivos mais antigos que 1 dia!

    segunda-feira, 26 de novembro de 2018 18:48