Při shodě mtime a velikosti souboru se kontrolní součet ani nepočítá
Musíte ale přenést název souboru a mtime.
rozdělením na soubory omezen prostor, ve kterém se shoda hledá
Což je nevýhoda, protože to může vést k tomu, že budete zbytečně po síti přenášet data, která už na druhé straně máte – akorát v jiném souboru. Myslím, že se naopak uvažovalo o variantách rsyncu, které by uměly pracovat s více soubory.
Pokud to dobře chápu, dělá to v 40GB binárním souboru podobné operace jako při deduplikaci, což bude asi dost drahá operace.
Naopak je to navržené tak, aby to byla levná operace – kontrolní součty se nepočítají pro každý blok od začátku, ale když se blok posune o jeden bajt, použije se kontrolní součet předchozího bloku a jenom se aktualizuje o ten jeden smazaný a jeden přidaný bajt. Navíc se velikost bloku odvozuje od velikosti souboru, takže ani u velkých souborů není nutné držet v paměti velké množství kontrolních součtů. Naopak, pokud má cílový server dost paměti, možná by se vyplatilo naopak velikost bloku zmenšit, aby se zbytečně nepřenášely velké bloky dat, když dojde jen k malé změně.
Snapshot na úrovni filesystému by si s tím poradil lépe?
Obecně hůře, protože neumí zachytit posuny dat. Když budete mít nějaký soubor a na začátku přidáte nebo smažete jediný bajt, na běžném souborovém systému musíte zapsat celý nový soubor. rsync bude potřebovat přenést jenom ty kontrolní součty a v případě přidání bajtu pak jeden blok s tím přidaným bajtem, v případě jeho odebrání nebude potřeba přenášet už nic jiného. Samozřejmě je otázka, jak často k takovým operacím dochází – já tipuju, že obrazy disků virtuálních počítačů budou jedny z mála souborů, kde skutečně dochází k přesouvání dat z místa na místo.
Další věc je, jak je na tom rsync s využitím více CPU jader a dále jak rychle disk naservíruje těch 40GB pro spočítání součtů (to může být limitující i pro ostatní nástroje).
Když nemáte zaznamenané, k jakým změnám došlo, musíte ten soubor vždy přečíst celý.
rsync optimalizuje to, aby nebylo nutné přenášet velký objem dat po síti. Využití více jader CPU asi nebude na pořadu dne, nejvíce omezujícím faktorem je rychlost sítě a pak rychlost čtení a zápisu na disk.