A co rsync @ ssh? Ten funguje na urovni hasho inherentne.
To je trochu složitější.
rsync přes SSH funguje tak, že se na cílové straně spustí druhá instance rsyncu a SSH se použije jako zabezpečený komunikační kanál.
SSH zajistí, že se po cestě nezmění data pomocí MAC (message authentication code). Zjednodušeně řečeno pro každý paket se vytvoří kód podle jeho obsahu, sekvenčního čísla a klíče. Totéž pak spočítá druhá strana po přijetí, když se to shoduje, paket se bere. Jestliže se neshoduje, tak se typicky spojení rozpadne (protože bezpečnost - tampering, man-in-the middle atp).
Mimo to jsou tam samozřejmě i další mechanismy u síťových vrstev pod tím. Např. u TCP musí přijímací strana potvrzovat přijetí každého paketu, pokud nepotvrdí, posílá se znovu (retransmission).
Jinak porovnání souborů k synchronizaci u rsync samotného funguje stejně, ať už je puštěný lokálně, přes ssh nebo přes nativní server.
Při první synchronizaci (cílový adresář je prázdný) zjistí, že tam nejsou žádné soubory a kopíruje všechno od začátku do konce, žádné kontrolní součty se nepoužívají. Při druhém spuštění se stejným zdrojem a cílem se zjišťuje, jestli je stejná délka každého souboru a čas změny. Pokud ano, tak se přeskakuje. Když se liší, tak se počítají kont. součty pro bloky ve zdrojovém a cílovém souboru, porovnávají se a následně se přenesou jen změněné bloky (nebo celé soubory, záleží na nastavení).
Tohle výchozí chování se dá změnit různými direktivami. Když použijete -c (resp. --checksum) při druhém spuštění, jak jsem zmiňoval, tak se vynutí, aby rsync vždycky porovnával všechny soubory. Takže se to dá použít právě i na ověření úspěšného přenosu.
Takže opravdu záleží, co všechno chcete kontrolovat, resp. jak moc jste paranoidní
Pokud vám jde jen o to minimalizovat rizika změny dat při přenosu po síti (reálně se to opravdu moc neděje, zvlášť v LAN), tak ten SSH tunel tomu může pomoct (nebo něco s podobným mechanisme, např. SMB 3.1 má také podepisování, NFS 4.1 může mít TLS).
Jestli chcete ale otestovat kompletní kopírování dat (tzn. čtení, přenos po síti, zápis, jakékoliv další chyby v procesu), tak to musíte udělat jako další krok až potom, co se kompletně zapíší.