Jinou hashovací funkci nepotřebujete. Rsync pozná, že se soubor změnil (primárně podle data změny), zdrojový soubor rozdělí na bloky, spočítá jejich hash, a pak na cílovém serveru hledá, zda v cílovém souboru není blok se stejným hashem. Pokud ano, použije daný blok, pokud ne, přenese daný blok ze zdrojového souboru. Pokud tedy změníte id3 tagy souboru, změní se jen jeho malá část, a rsync přenese jen blok obsahující tuto část souboru. Tohle přenášení pouze změněných částí je důvod, proč rsync vznikl.
Oboustranná synchronizace by také neměl být problém, ale musí vám jít na obou stranách správně hodiny, aby rsync poznal, co je novější verze. A samozřejmě rsync nepozná konfliktní změny, použije vždy novější verzi – musíte si pohlídat, abyste jeden soubor neměnil na obou stranách různým způsobem.
To přesouvání souborů zkuste řešit parametrem --fuzzy a souvisejícími, ale s tím bude mít problém každý systém, který vidí jenom aktuální obraz souborového systému. Řešil by to nějaký verzovací systém, který přesuny souborů sleduje – ale nenapadá mne žádný určený pro binární soubory.