Arquivo em lote robocopy bidirecional

1

Eu tenho uma unidade flash USB onde eu tenho uma pasta chamada X, que sempre tem que ser como a pasta Y no meu notebook e vice-versa, dependendo das ações mais recentes. Por exemplo, se eu excluir algo na pasta Y, ele também deve ser deletado na pasta X (assim que a unidade flash estiver conectada) e vice-versa. Se eu adicionar uma pasta ou um arquivo no X, ele também deve ser adicionado em Y, assim que a unidade flash estiver conectada.

Agora fiz um pequeno script em lote usando o robocopy:

@echo off
robocopy "D:\AC ActiveZone Mobile" "C:\AC ActiveZone" /MIR
PAUSE

A pasta ActiveZone Mobile é nossa pasta X e a ActiveZone é nossa pasta Y. O problema agora é que isso não parece ser uma sincronização bidirecional. Eu demonstrarei isso:

1.) Ambas as pastas e suas subpastas e arquivos são ident 2.) Criado novo arquivo T1 na pasta X 3.) Criado o novo arquivo T2 na pasta Y 4.) Ran o script

Resultado: em vez de ter T1 e T2 nas duas pastas X e Y, eu só tenho T1 nas duas pastas X e Y agora.

Além disso, (após o primeiro teste acima) se eu excluir T1 na pasta Y e executar o script, tudo que eu obtenho é um novo T1 na pasta Y. Mas a ação de exclusão de T1 em Y não é mais antiga, mas mais recente que a criação de T1 em X. Eu quero que T1 também seja deletado em X ao invés de T1 ser copiado de X para Y.

Como fazer isso com um script em lote?

    
por user197915 06.09.2014 / 22:16

2 respostas

2

Hum, fácil. Basta executá-lo de duas formas, excluindo arquivos mais antigos:

@ECHO OFF
ECHO Two way mirror between %1 and %2, continue?
PAUSE
robocopy %2 %1 /E /DST /FFT /XO /XJ
robocopy %1 %2 /E /DST /FFT /XO /XJ

Isso deve preservar a cópia mais recente, se houver arquivos em ambos os locais. Eu uso / DST e / FFT porque diferenças de carimbo de data / hora NTFS / FAT32 geralmente causam falsas comparações inválidas de outra forma. Eu também excluo pessoalmente Thumbs.db, desktop.ini etc.

Se você quiser excluir arquivos não existentes, você deve decidir qual é o local "principal", colocá-lo na segunda linha e alterar / E para / MIR. Eu acho que a sua idéia de saber se um arquivo foi excluído de um ou de outro ao invés de um simplesmente não ter um arquivo que o outro tem é impossível sem algum tipo de rastreamento que está além do que o robocopy pode fazer.

    
por 10.07.2015 / 13:41
-1

Use a Central de Sincronização no Painel de Controle para resolver esse tipo de problema. Robocopy é o 'Robust Copy Tool' e só copia, mas inclui outras informações, como carimbos de hora. Não sincroniza, mas "Sempre disponível off-line" faz. Ou use o antiquado 'Briefcase'.

    
por 07.09.2014 / 00:14