Tentando aprender Robocopy para um plano de backup básico, e tentei isso em um arquivo bat:
@echo off
echo "Hello World!"
robocopy C:\Testfolder Z:\Testfolder
pause
onde Z: é uma unidade de rede (uma unidade externa USB conectada à porta USB do roteador)
Existem apenas dois arquivos em C:\Testfolder - 02.jpg e 02-03.jpg.
A primeira vez que executei isso, ele criou Testfolder em Z: e copiou as duas imagens.
Curioso para saber o que aconteceria, executei-o novamente - desta vez, as mensagens na tela dizem que ele copiou 02.jpg, mas pulou 02-03.jpg. A mesma coisa com a execução novamente.
Por que isso seria?
Por padrão, o robocopy copia apenas os arquivos que ele acha que foram alterados desde a última vez que você o executou. Você pode confirmar isso vendo o status no final da cópia. Deve dizer que Files Skipped é 1. Talvez seja necessário incluir a
/v
opção para obter melhores detalhes.Como você está copiando para uma unidade baseada em rede conectada ao seu roteador, há uma boa chance de que haja um bug de tempo de arquivo e esteja fazendo com que o robocopy veja uma data e hora diferentes em um dos arquivos de destino. Problemas de atributo de arquivo são comuns com compartilhamentos de samba baseados em Linux, como o que provavelmente é usado pelo seu roteador. Isso explicaria por que ele continua copiando novamente um arquivo se não foi alterado. Você pode tentar o
/timfix
parâmetro para ver se ele corrige a hora nos arquivos e para de copiar novamente os arquivos inalterados.Se você deseja que o robocopy copie arquivos iguais e inalterados, adicione a
/is
opção.Mais informações aqui: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy