У меня есть задание cron по использованию rsync для синхронизации данных на общем ресурсе Windows samba (который я монтирую с помощью / etc / fstab при загрузке). Моя проблема в том, что передача занимает почти столько же времени, сколько и первоначальная передача. У меня тонна файлов, поэтому я думаю, ему все еще нужно проверить каждый на предмет изменений, но должен ли он быть немного быстрее во второй раз? Я просто использовал такую команду:
rsync -aver ssh /mnt/winserver/d/www /path/to/disk/rsync-backup/
где / mnt / winserver - это смонтированный общий ресурс cifs, а / path / to / disk - мое локальное дисковое пространство.
Следует помнить, что дельта-алгоритм наиболее полезен, когда сервер rsync работает в удаленной системе, а клиент - в локальной системе.
Когда решит, что нужно передать большой файл, потому что вывод stat () отличается (размер, даты изменения), тогда некоторому процессу rsync потребуется прочитать исходный и целевой файлы. Если у вас смонтированы удаленные файлы, то процесс, запущенный в вашей локальной системе, будет читать весь файл по сети. Если вы подключались к демону rsync в удаленной системе, то удаленный процесс rsync будет читать файлы, и алгоритм будет использоваться для принятия решения о том, какие блоки необходимо обновить, и только различия будут передаваться по сети.
Что касается того, почему он медленный, причин может быть много. Если ваш выбор файлов был в основном огромным количеством небольших файлов, то время, необходимое для передачи, может не иметь значения, и вы ждете завершения stat ().
Если вы используете SMB через WAN-соединение, вы можете столкнуться с проблемой стандартного SMB-отстойника из-за проблем с ссылками с высокой задержкой.
Возможно, вы захотите настроить SSH-сервер на вашем компьютере с Windows, который может запускать rsync. Это уже не бесплатно, но я обычно использую CopSSH / cwRsync.