Зазвичай rsync
пропускає файли, коли файли мають однакові розміри та час на стороні джерела та місця призначення. Це евристика, яка, як правило, є хорошою ідеєю, оскільки не дозволяє rsync
перевіряти вміст файлів, які, ймовірно, ідентичні на джерелах та сторонах призначення.
--ignore-times
вказує rsync
вимкнути евристичний розмір файлів за часом і розміром і, таким чином, безумовно перенести ВСІ файли з джерела до місця призначення. rsync
Потім перейде до читання кожного файлу на стороні джерела, оскільки йому потрібно буде або використовувати його алгоритм передачі дельти, або просто надсилати кожен файл у повному обсязі, залежно від того, --whole-file
була вказана опція.
--checksum
також змінює евристичний розмір файлів, розмірів, розмірів файлів, але тут він ігнорує часи та вивчає лише розміри. Файли на стороні джерела та призначення, які відрізняються за розміром, передаються, оскільки вони, очевидно, різні. Файли однакового розміру rsync
перевіряються сумою (з MD5 у версії 3.0.0+ або з MD4 у попередніх версіях), також передаються файли, які мають різні суми.
У випадках, коли джерела та цільові сторони здебільшого однакові, --checksum
це призведе до того, що більшість файлів буде перевірено на суму з обох сторін. Це може зайняти тривалий час, але підсумок полягає в тому, що найменший мінімум даних буде фактично перенесений по дроту, особливо якщо використовується алгоритм передачі дельта. Звичайно, це лише виграш, якщо у вас дуже повільні мережі та / або дуже швидкий процесор.
--ignore-times
з іншого боку, надсилатиме більше даних по мережі, і це змусить прочитати всі вихідні файли, але принаймні це не покладе додатковий тягар обчислення багатьох криптографічно сильних хешсумів на процесор джерела та призначення. Я б очікував, що цей варіант буде ефективнішим, ніж --checksum
коли ваші мережі швидкі та / або ваш процесор порівняно повільний.
Я думаю, я б коли-небудь використовував --checksum
або --ignore-times
якби я передавав файли до місця призначення, де підозрювали, що вміст деяких файлів був пошкоджений, але час модифікації яких не змінювався. Я не можу придумати жодної іншої вагомої причини використовувати будь-який варіант, хоча, ймовірно, є й інші випадки використання.
--checksum
корисним разом із--itemize-changes
підтвердженням резервних копій. Раз і знову мої резервні сценарії виконують повне порівняння таким чином після завершення поточних щоденних та тижневих оновлень. Я отримую електронний лист, позначений терміново, якщо--itemize-changes
виводить щось несподіване, тому я знаю, що існує потенційна проблема, яку я повинен розглянути.