2016-02-20 6 views
0

J'ai plusieurs lecteurs, où je veux synchroniser avec un autre lecteur avec robocopy. La structure suivante:Robocopy: Utiliser/mir pour résumer deux tâches

E:\ 
- ServerFolders 
-- A 
-- B 

F:\ 
- ServerFolders 
-- C 
-- D 

Ceci est la commande je:

robocopy E: G: /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /log+:"C:\Users\Administrator\Desktop\logs\backup_%date%.log" /XD "System Volume Information" "Recycler" 
robocopy F: G: /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /log+:"C:\Users\Administrator\Desktop\logs\backup_%date%.log" /XD "System Volume Information" "Recycler" 

Comme vous pouvez le voir, je fais deux calles et que vous souhaitez conserver tous les horodateurs. Si quelque chose est supprimé de E: ou F: il devrait également être supprimé sur G:.

Le résultat est maintenant que si la sauvegarde terminée, tout de E: n'est plus disponible. Je pense que c'est à cause de /mir, qui supprime les dossiers qui n'existe plus. Qu'est-ce que je veux est le suivant:

G:\ 
- ServerFolders 
-- A 
-- B 
-- C 
-- D 

Que dois-je changer pour cela? Si je spécifie les sous-dossiers ServerFolders le même problème se produira. De plus, je dois changer le script chaque fois qu'un nouveau dossier est ajouté.

Edit:

La seule chose qui me vient à l'esprit est de faire pour chaque dossier:

set source1=%fromHDD1%\ServerFolders\A 
set source2=%fromHDD1%\ServerFolders\B 
set source3=%fromHDD2%\ServerFolders\C 
set target1=%to%\ServerFolders\A 
set target2=%to%\ServerFolders\B 
set target3=%to%\ServerFolders\C 

robocopy %source1% %target1% /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /XD "System Volume Information" "Recycler" 
robocopy %source2% %target2% /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /XD "System Volume Information" "Recycler" 
robocopy %source3% %target3% /e /zb /np /copy:DAT /dcopy:T /r:2 /w:5 /mir /XD "System Volume Information" "Recycler" 

est-il pas moyen plus facile?

+0

Je sais que c'est du bruit pour vous, mais pourquoi êtes-vous downvoting et votant pour la fermeture de la question? J'ai fait mes recherches et j'ai aussi formulé clairement la question. Alors quel est votre problème? – testing

+0

Ce n'est pas hors sujet.C'est fondamentalement une question de programmation et vous pouvez rechercher vous-même: http://stackoverflow.com/questions/tagged/batch-file, http://stackoverflow.com/questions/tagged/robocopy – testing

Répondre

1

Y a-t-il un moyen plus simple?

TL; DR: Non, il n'y en a pas. Robocopy ne peut pas à lui seul résumer le contenu de deux lecteurs sources dans un dossier de destination et continuer à mettre en miroir chaque sous-dossier sur son lecteur source d'origine. Pour ce faire, Robocopy aurait dû conserver ailleurs un mappage des sous-dossiers vers le lecteur source, et il n'a pas cette fonctionnalité. Donc, vous devez maintenir cette cartographie pour Robocopy, ce que vous suggérez dans votre édition.

BTW, si Robocopy avait une telle fonctionnalité, que feriez-vous si le même nom de sous-dossier (mais un contenu différent) apparaissait sur deux lecteurs sources? (Par exemple, il y a deux E:\ServerFolders\X et F:\ServerFolders\X.)

Si vous pouvez vous détendre votre récapitulant les règles l'alternative évidente serait de créer des sous-dossiers sur G: pour chacun des lecteurs source. Par exemple. utilisez les destinations G:\ServerFolders\DriveF\A, B, ... et G:\ServerFolders\DriveG\C, D, ....

Avec cela, vous pouvez envisager de présenter le contenu résumé de G:\ServerFolders\DriveF et G:\ServerFolders\DriveG en créant un library si vous êtes sur une version de Windows qui les prend en charge. Ou vous pourriez obtenir le même effet en créant et en maintenant un répertoire avec links dans chacun des sous-répertoires.