След година и половина разработка, излезе версия Rsync 3.2.4, инструмент за синхронизация на файлове и архивиране, който позволява минимизиране на трафика чрез инкрементално копиране на промените. За транспорт могат да се използват ssh, rsh или собствен протокол rsync. Поддържа се организиране на работа на анонимни rsync сървъри, оптимално пригодени за синхронизация на огледала. Кодът на проекта се разпространява под лицензия GPLv3.
Сред добавените промени:
- Предложен нов метод за защита на аргументите на командния ред, който наподобява предишната налична опция «—protect-args» («-s»), но не нарушава функционирането на скрипта rrsync (restricted rsync). Защитата се състои в екраниране на специалните символи, включително интервали, при предаване на запитвания към външен команден интерпретатор. Новият метод не екранира специални символи вътре в обрамчен блок с кавички, което позволява използването на просто обозначаване на името на файла с кавички без допълнително екраниране, например сега е допустима команда «rsync -aiv host:’a simple file.pdf’ .» За възстановяване на старото поведение е предложена опцията «—old-args» и променливата на средата «RSYNC_OLD_ARGS=1».
- Решен е дългогодишен проблем с обработката на символите за десетичен разделител с оглед на текущата локализация («,» вместо «.»). За скриптове, проектирани да обработват само символа «.» в числата, в случай на несъвместимост може да се зададе локализацията «C».
- Отстранена е уязвимост (CVE-2018-25032) в кода, включен в библиотеката zlib, която води до преливане на буфера при опити за компресия на специално подготвена последователност от символи.
- Реализирана е опцията «—fsync» за извикване на функцията fsync() при всяка операция с файл за изчистване на кеша на диска.
- В скрипта rsync-ssl е активирана опцията «-verify_hostname» при работа с openssl.
- Добавена е опцията «—copy-devices» за копиране на файловете на устройства като обикновени файлове.
- Съкратено е потреблението на памет при инкрементална предаване на голям брой малки каталози.
- На платформата macOS е осигурена работата на опцията «—atimes».
- Реализирана е възможността за актуализиране на атрибутите xattrs за файлове в режим само за четене, ако потребителят има права да променя разрешенията (например, когато се изпълнява с права на root).
- Добавен и включен по подразбиране параметър «—info=NONREG» за извеждане на предупреждения при пренос на специални файлове.
- Скриптът rrsync (restricted rsync) е презаписан на Python. Добавени са нови опции «-munge», «-no-lock» и «-no-del». По подразбиране са включени блокировките за опции «—copy-links» (-L), «—copy-dirlinks» (-k) и «—keep-dirlinks» (-K) за усложняване на извършването на атаки, манипулиращи символични линкове към директории.
- Скриптът atomic-rsync е пренаписан на Python и разширен с възможност за игнориране на ненулеви кодове за връщане. По подразбиране се игнорира код 24, който се връща при липса на файлове по време на работа на rsync (например, код 24 се връща за временни файлове, които са били налични по време на началната индексация, но са били изтрити до момента на прехвърлянето).
- Скриптът munge-symlinks е пренаписан на Python.
Източник: opennet.ru
