Назад | Перейти на главную страницу

rsync не использует дельта-передачу при первом запуске

Я пытаюсь синхронизировать большой локальный каталог (с помощью командного файла с использованием rsync 3.0.7 на Cygwin, Windows 7 x64, 30k файлов, размер 200gb) с удаленным сервером (Debian x64 с ядром 2.6, rsyncd 3.0.7) поверх медленное интернет-соединение (загрузка 90 Кбайт / с).

Я знаю, что почти все файлы идентичны, и я проверил это, используя md5sum локально и удаленно.

Однако при запуске rsync с моей локальной машины каждый файл полностью передается впервые. Когда я завершаю пакетный файл после нескольких передач и запускаю его снова, уже переданные файлы пропускаются. Но как только он добирается до еще не переданного файла, он снова загружает файл целиком, вместо того, чтобы замечать, что контрольная сумма одинакова как локально, так и удаленно.

Пакетный файл, вызывающий rsync, выглядит следующим образом (здесь для удобства чтения добавлены обратные косые черты и линейные прерывания):

c:\cygwin\bin\rsync.exe --verbose --human-readable --progress --stats \
    --recursive --ignore-times --password-file pwd.txt \
    /cygdrive/d/ftp/data/ \
    rsync://remoteuser@remoteserver.domain.org:33400/data/  |  \
    c:\cygwin\bin\tee.exe --append rsync.log

Я экспериментировал с использованием следующих параметров в различных комбинациях, но это тоже не помогло:

--checksum --partial --partial-dir=/tmp/.rsync-partial --compress

У вас есть значение --ignore-times назад. С помощью этой опции вы заставите его все обновить.

Цитата из справочной страницы:

   -I, --ignore-times
          Normally rsync will skip any files that are already the same size
          and have the same modification timestamp.   This
          option turns off this "quick check" behavior, causing 
          all files to be updated.

Если файлы не имеют одинаковых временных меток для обеих целей, вам придется использовать --checksum вариант. Я бы рекомендовал убедиться, что отметки времени совпадают после того, как сделаете это один раз, чтобы вы могли использовать быструю проверку в будущем.