Robocopy - Existe alguma maneira de copiar nomes de arquivos / pastas em minúsculas e minúsculas?

1

Existe uma opção de linha de comando ou qualquer forma de obter o Robocopy para detectar alterações / renomeações de arquivos ou pastas no Windows? Por exemplo, se eu renomear o arquivo de origem 'example.txt' para 'Example.txt', o Robocopy não detectará essa renomeação e as alterações serão ignoradas e o arquivo não será copiado para o diretório de destino. Isso agora deixa o diretório de destino fora de sincronia da fonte. Qualquer sugestão sobre como abordar ou contornar este problema seria muito apreciada!

    
por jtbrown3 29.08.2016 / 22:44

2 respostas

0

Robocopy tem um comando 'list only', também um comando detalhado sintaxe de robocopy para que o comando list only possa gerar uma saída da lista desses arquivos não copiados (porque o robocopy os considera idênticos) que você poderia massagear em uma planilha para produzir um arquivo de entrada permitindo que você excluísse os arquivos problemáticos no diretório de destino e, é claro, o robocopy poderia copiá-los. Infelizmente, você não forneceu nenhum detalhe do escopo da tarefa, portanto, esta nota deve ficar aquém de uma solução de sinos e assobios. É o tipo de tarefa que pode ser feita por script, mas você tem que decidir se a depuração de tempo valeria a pena.

    
por 29.08.2016 / 23:56
0

O Windows não diferencia maiúsculas de minúsculas, o que significa que os casos mistos são considerados idênticos. Se você espelhar (com a opção / MIR), ele tratará "source \ Example.txt" e "destination \ example.txt" como arquivos "idênticos", e como você disse, ele não será copiado porque não há necessidade de copiar um arquivo "idêntico".

Concordo com a pessoa que disse que isso é um defeito, no entanto, o robocopy emprega uma heurística com base no timestamp e no tamanho do arquivo, de modo que o robocopy é "supostamente" defeituoso, ou pelo menos não perfeito.

Uma maneira de lidar com isso é ir até o destino, excluir o arquivo e, em seguida, executar novamente o Robocopy.

Outra maneira é "ajudar" o Robocopy a detectar uma alteração alterando o registro de data e hora ou o tamanho do arquivo do arquivo na origem. Alterar o conteúdo do arquivo sem alterar o tamanho do arquivo e fazer o backdating do timestamp provavelmente não representará uma alteração no que diz respeito ao Robobopy.

Lastly you might want to run cygwin "diff" in order to verify the work of robocopy. However, this verification itself is not perfect because cygwin is case-sensitive so instead of doing a comparison of files "example.txt" and "Example.txt" it will report that one is missing from the source and the other is missing from the destination. However, for the vast majority of files where this capitalization discrepancy is not happening, cygwin "diff" does serve to verify robocopy.

If you are not familiar with cygwin the only thing you need to know in order to do the diff is that C: drive is written as /cygdrive/c and D: drive is written as /cygdrive/d and just like in Linux and Unix the slash character is the separator. That is unlike Windows where the backslash is the separator.

Suppose for example, an original tree of "Documents" is on C: drive and a backup is on D: drive, the following cygwin command would verify the backup. (Adjust the paths to suit.)

diff --recursive --brief /cygdrive/c/users/userName/Documents /cygdrive/d/windowsbackup/Documents

    
por 06.04.2018 / 08:36