TIP#1564: Jak ve Windows synchronizovat dvě složky pomocí Robocopy

Pokud potřebujete rychle synchronizovat složky a nechcete si na to opatřovat žádné extra software (Jak synchronizovat soubory a složky mezi počítači?) tak můžete použít staré známé robocopy – to je totiž součástí Windows. Řeč o něm je už v  Čím zálohovat počítač s Windows? a Jak ve Windows přesunout soubory ve složce do jiné po určitém počtu dní

Stačí použít (ideálně si dát do CMD souboru) následující (zdroj a cíl jsou názvy složek, disky, síťové disky, atd)

robocopy "zdroj" "cíl" /r:60 /w:5 /PURGE /MIR /MT:64

V této podobě se postará o to, že na cílovém disku bude po dokončení přesně totéž jako na zdrojovém disku. A to co je na zdrojovém disku samozřejmě nijak měnit nebude.

/r:60 je nastavení počtu pokusů o opakování v případě nějakého problému, zejména „Soubor je používán“
/w:5 je nastavení pěti sekund mezi pokusy (výchozí nastavení je 30 sekund)
/PURGE zajistí smazání v cíli pokud soubor není ve zdroji (není nutná, /MIR dělá rovnou totéž)
/MIR je pokyn k zrcadlení, tj, všech složek i podsložek
/MT:64 je nastavení počtu vláken pro kopírování, vychozí je 8 (maximum 128) a zvýšení může pomoci zrychlením

Pokud by šlo o kopii napříč Internetem tak by bylo vhodné přidat /Z – tj. kopírování restartovatelným způsobem. Pro kopírování mezi disky v počítači to ale kopírování zpomalí, takže se vyplatí vynechat.

K určení vhodné počtu vláken je nutné dodat, že pokud budete synchronizovat opravdu velké soubory, tak větší množství vláken nepovede k zlepšení. U menších souborů ale ano. Osobní zkušenost při synchronizaci stovek MB video souborů je že nízký počet vláken (klidně /MT:1) vede ke nejvyšší rychlosti kopírování NAS 1 Gbps Ethernet  -> PC -> USB 3.0 Externí disk. Ideální je si to postupně otestovat.

Užitečné ještě může být přesměrovat výstup z robocopy do nějakého LOG souboru – můžete se tak po dokončení podívat, jestli vše proběhlo bez problémů. Dělá se to klasický přes >soubor.log a není na to tedy potřeba  žádný přepínač. Pokud řetězíte více robocopy tak můžete využít >>soubor.log. Stejně tak ale můžete použít parametr /LOG:soubor.log (přepíše pokud existuje) nebo /LOG+:soubor.log (přidá do již existujícího). Chcete-li použít /LOG a stále vidět co se děje, tak přidejte /TEE parametr.

Pozor na jednu nepříjemnost – datum a čas (timestamp) u souborů v cíli vs. zdroji se může lišit pokud budete robocopy promíchat s kopiemi jinými nástroji. Pokud by se vám robocopy příliš věnovalo kopírování něčeho co už dělalo minule tak zkuste /FST – ale spíš se snažte metody synchronizace nemíchat.

Pokud při kopírování narazíte na Error 129 a název složek obsahuje mezery tak to má snadné řešení – neuvádějte na konci obrácené lomítko (\). Musí to být bez něj.