Po roce a půl vývoje je k dispozici verze Rsync 3.2.4, nástroje pro synchronizaci souborů a zálohování, který minimalizuje přenos dat díky inkrementálnímu kopírování změn. Jako přenosové metody mohou být použity ssh, rsh nebo vlastní protokol rsync. Podporována je organizace anonymních rsync serverů, které jsou optimálně navrženy pro zajištění synchronizace zrcadel. Kód projektu je distribuován pod licencí GPLv3.
Mezi přidanými změnami:
- Byla navržena nová metoda ochrany argumentů příkazového řádku, která připomíná dříve dostupnou možnost „—protect-args“ („-s“), ale nenarušuje fungování skriptu rrsync (restricted rsync). Ochrana spočívá v escapování speciálních znaků, včetně mezer, při předávání požadavků externímu příkazovému interpretu. Nová metoda neescapuje speciální znaky uvnitř ohraničeného uvozovkami bloku, což umožňuje jednoduché označení názvu souboru uvozovkami bez dalšího escapování, například nyní je povolena příkaz „rsync -aiv host:‘a simple file.pdf’ .“. Pro vrácení starého chování byla navržena volba „—old-args“ a proměnná prostředí „RSYNC_OLD_ARGS=1“.
- Byl vyřešen dlouholetý problém s zpracováním desetinných čárek podle aktuální locale (‚,‘ místo ‚.‘). Pro skripty, které zpracovávají pouze znak ‚.‘ v číslech, lze v případě nekompatibility nastavit locale na ‚C‘.
- Opravená zranitelnost (CVE-2018-25032) v kódu z knihovny zlib, která vedla k přetečení zásobníku při pokusu o kompresi speciálně připravené sekvence znaků.
- Byla realizována volba „—fsync“ pro vyvolání funkce fsync() při každé operaci se souborem k vyprázdnění diskového cache.
- Ve skriptu rsync-ssl byla použita volba „-verify_hostname“ při volání k openssl.
- Přidána volba „—copy-devices“ pro kopírování zařízení jako obyčejných souborů.
- Snížená spotřeba paměti při inkrementálním přenosu velkého počtu malých adresářů.
- Na platformě macOS byla zajištěna funkčnost volby „—atimes“.
- Byla realizována možnost aktualizace atributů xattrs pro soubory v režimu pouze pro čtení, pokud má uživatel oprávnění ke změně přístupových práv (například při spuštění s oprávněními root).
- Byla přidána a ve výchozím nastavení aktivována možnost „—info=NONREG“ pro zobrazování upozornění na předávání speciálních souborů.
- Skript rrsync (restricted rsync) byl přepsán v jazyce Python. Byly přidány nové možnosti „-munge“, „-no-lock“ a „-no-del“. Ve výchozím nastavení je aktivováno zamykání možností „—copy-links“ (-L), „—copy-dirlinks“ (-k) a „—keep-dirlinks“ (-K) pro ztížení provádění útoků manipulujících se symbolickými odkazy na adresáře.
- Skript atomic-rsync byl přepsán v jazyce Python a rozšířen o funkci ignorování nenulových návratových kódů. Ve výchozím nastavení se ignoruje kód 24, který se vrací při ztrátě souborů během práce rsync (například kód 24 se vrací pro dočasné soubory, které existovaly během počáteční indexace, ale byly odstraněny do doby přenosu).
- Skript munge-symlinks byl přepsán v jazyce Python.
Zdroj: opennet.ru
