Я вношу незначні зміни до дуже великого файлу зображень файлу (різниця лише в декількох пікселях), який потребує тривалого часу для передачі по мережі.
Чи існує спосіб, щоб rsync визначив різницю у файлі та лише надіслав невелику різницю по мережі?
Я вношу незначні зміни до дуже великого файлу зображень файлу (різниця лише в декількох пікселях), який потребує тривалого часу для передачі по мережі.
Чи існує спосіб, щоб rsync визначив різницю у файлі та лише надіслав невелику різницю по мережі?
Відповіді:
rsync
алгоритм передачі дельта робить це за замовчуванням. Цитуючи сторінку rsync :
ОПИС
Rsync - це швидкий і надзвичайно універсальний інструмент для копіювання файлів. Він може скопіювати локально, в / з іншого хоста через будь-яку віддалену оболонку або в / з віддаленого демона rsync. Він пропонує велику кількість варіантів, які керують кожним аспектом його поведінки і дозволяють дуже гнучко визначати набір файлів для копіювання. Він відомий своїм алгоритмом передачі дельти, який зменшує кількість даних, що надсилаються по мережі, надсилаючи лише відмінності між вихідними файлами та існуючими файлами в призначенні . Rsync широко використовується для резервного копіювання та дзеркального відображення та як покращена команда копіювання для повсякденного використання.
Якщо ви хочете відключити його, вам доведеться скористатися опцією -W
або --whole-file
.
-W, - чий файл
Ця опція вимикає алгоритм передачі дельти rsync, через що всі передані файли надсилаються цілими. Передача може бути швидшою, якщо цей параметр використовується, коли пропускна здатність між джерелом і машинами призначення перевищує пропускну здатність до диска (особливо, коли "диск" насправді є мережевою файловою системою). Це за замовчуванням, коли і джерело, і пункт призначення вказані як локальні шляхи, але тільки якщо не існує жодної опції пакетного запису.
Якщо ви дійсно знаєте, наскільки змінився ваш файл, ви навіть можете оптимізувати цю поведінку передачі дельти, налаштувавши розмір блоку дельта:
-B, --block-size = БЛОКСІЗАЦІЯ
Це змушує розмір блоку, який використовується в алгоритмі передачі дельти rsync, до фіксованого значення. Зазвичай він вибирається виходячи з розміру кожного файлу, який оновлюється. Детальну інформацію див. У технічному звіті.
А якщо ви хочете отримати більше інформації про сам алгоритм, ви можете знайти його тут: Алгоритм Rsync
rsync
поводиться так за замовчуванням. Поки незначна зміна - це незначна зміна файлу, а файл вже існує по обидва боки посилання в майже однакових версіях, передані дані повинні бути набагато меншими, ніж загальний розмір файлу. З першого абзацу на головній сторінці: "Він відомий своїм алгоритмом передачі дельта, який зменшує кількість даних, що надсилаються по мережі, надсилаючи лише відмінності між вихідними файлами та існуючими файлами в пункті призначення".