3

Я только что настроил сервер Debian для резервного копирования ПК с Windows. В настоящее время я тестирую различные методы, в том числе: rsync (с использованием Deltacopy в Windows), SMB через Samba и scp. В настоящее время rsync (без SSH и без сжатия) и scp занимают около 16 минут по гигабитной локальной сети для передачи файлов 9 ГБ. Однако SMB занимает всего пару минут. Почему rsync особенно медленный? Я чувствую, что могу неправильно понять, откуда берутся реальные преимущества rsync - передача только измененных битов. Однако я все еще чувствую, что это не объясняет начальную медленную скорость передачи, и я, должно быть, делаю что-то не так.

Я перехожу на общий ресурс Samba на моем компьютере с Linux во всех случаях.

1 ответ1

0

проблема в том, что rsync использует время изменения и размер файла в качестве краткого справочного материала, чтобы определить, изменился файл или нет. Существует более подробный и точный способ проверить, изменились ли файлы, и rsync также поддерживает это, однако, если время и размер изменения файла откладываются в первую очередь, эти "более подробные" проверки пропускаются, а затем rsync принимает файл изменилось, следовательно, пытается скопировать весь файл.

В частности, когда в гетерогенной среде (Windows+Linux, ...) и когда не работает на локальных файловых системах (то есть при использовании монтирования / общего ресурса SMB или других протоколов), существует небольшая вероятность того, что времена модификации не пройдены правильно между источником rsync и его назначением.

Вполне возможно, что время модификации округляется или иным образом изменяется в зависимости от используемой ОС и / или сетевого протокола и, следовательно, может показаться другим (даже незначительным, даже если локальная файловая система имеет "правильное" время mtime).

Пожалуйста, проверьте, так ли это или нет, и протестируйте его через командную строку (если возможно) и такие утилиты, как "stat" (Linux) или, если это абсолютно необходимо, мини-программы на perl/python, которые выводят точное время модификации, передаваемое через свойства ОС и локальной файловой системы (в конечном счете, обходя любые сетевые протоколы, такие как Samba).

Пример вывода для утилиты "stat" под unix:

$ stat somefile.txt 
  File: `somefile.txt'
  Size: 1014        Blocks: 8          IO Block: 4096   regular file
Device: 805h/2053d  Inode: 1448800     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2012-07-21 17:20:33.548997182 +0530
Modify: 2011-08-16 23:27:19.648480473 +0530
Change: 2011-08-16 23:27:19.648480473 +0530

Не может быть, чтобы ваши команды rsync последовательно занимали "16 минут" или около того. Это не имеет никакого смысла. Обычно rsyncs становится быстрее, чем меньше различий до и после каждого запуска. Только scp будет занимать постоянное время при каждом запуске, в зависимости от объема копии. Таким образом, тот факт, плюс тот факт, что вы уже исключили сжатие и шифрование (ssh), может стать узким местом в производительности, заставляет меня предположить, что со сравнениями по времени модификации могут происходить какие-то изменения.

Я специально имел этот случай сам с креплениями Samba от моего Synology NAS. Однако, независимо от того, относится ли это к вам или нет, я надеюсь, что вы скоро найдете истинную причину своей проблемы.

Повеселись.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .