Чому мій rsync такий повільний порівняно з чистим CP або навіть scp?


15

Я передаю файли з Linux на Windows 7 через змонтовану спільну частину (частка монтується з Windows на Linux). . Мені вже дуже прикро, що у мене є тільки 100MBit. Природно, я сліпо користувався rsync, але вже через день запитав, чому він відчуває себе так повільно. Увімкнення вимірювача прогресу показало швидкість передачі даних приблизно в 2 МБ / с.

Тому я взяв досить великий файл (800 МБ) і відстежив терміни передачі (1):

cp : 05:33
scp (2): 06:33
rsync : 21:51

1) я видалив файли між кожним запуском
2) scp через localhost до тієї ж машини Linux безпосередньо на загальну версію; повністю марний, але за умови вимірювання прогресу

Тести були такими ж простими

(cp|scp|rsync) <source> <destination>

Ніяких спеціальних аргументів, крім хоста / порту для scp. Я навіть спробував -Wперемикач на rsync, але скасував через десять хвилин. rsync 3.0.3 працює на Ленні. Щоб мати змогу будь-коли перервати процес копіювання та відновити, привело мене до rsync, але зараз я думаю, що мені серйозно потрібно переглянути цю вимогу.

Як можлива така велика різниця?

Оновлення / вирішено:

Завдяки rschuler мені вдалося вирішити питання: використовуйте демон rsync замість монтажу smb з міркувань ефективності. Зазначена DeltaCopy працює, але треба стежити за кількома речами

  • це приємна обгортка GUI, але якщо щось піде не так, добре знати, як це виправити. Здається, я ввів свої облікові дані користувачів, під якими запускати службу rsync, вперше помилявся, але графічний інтерфейс не дозволив мені встановити новий. Я зрозумів, що вона працює як служба, і я зміг встановити там належні облікові дані
  • Потрібно вручну додати порт до брандмауера, щоб дозволити з'єднання
  • Особистий смак: переконайтеся, що акції захищені паролем або без них, можливо, переконайтеся, що послуга не починається автоматично з Windows; про всяк випадок
  • Обрізаний двійковий файл rsync - це не рідний порт Windows, а заснований на cygwin. Однак DLL cygwin не містить належним чином поводження з UTF8 та керованими символами, які не мають права. Отримайте виправлену DLL від http://www.okisoft.co.jp/esc/utf8-cygwin/ .

Після цього номінальна передача підскочила з 2 МБ / с до ~ 8 МБ / с; абсолютно фантастично!


Ви видаляли цільовий файл між кожним запуском тесту? Якщо файл призначення вже існував, а метадані не були правильними, знадобиться перевірити суму джерела та пункту призначення.
Зоредаче

@Zoredache: я видалив файли між прогонами; також -Wперемикач, як передбачається, проігнорує
позначте

Відповіді:


18

(частка монтується з Windows на Linux)

Це ваша проблема. rsync виконує прокрутки контрольних сум над пунктом призначення. Вікна розділяють. Ви витягуєте всі дані по мережі для обчислення контрольних сум. (Можливо, не раз).

Що вам потрібно зробити - це rsync працювати на обох машинах. Таким чином, лише різниці (і контрольні суми) будуть передані по мережевому кабелю. DeltaCopy - це віконна rsync. У ньому є достатньо хороших документів, щоб змусити вас йти.

Дивіться відповідь, що голосує на це питання, для кращого пояснення, чому я думаю, ви можете зловживати rsync.


Бінго, ваша відповідь не могла бути більш суттєвою. Велике спасибі, я засвоїв свій урок.
позначка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.