После того, как я разочаровался в производительности внешнего USB-накопителя с моим Synology DS251j, я провел несколько тестов переноса на оболочке.

Интересно, что при использовании rsync копирование тестового файла объемом 1 ГБ занимает в три раза больше времени, чем при использовании простой команды cp .

Я не мог подтвердить это поведение на настольном Linux. У кого-нибудь еще был подобный опыт? Что-то не так с rsync на DS?

Тестовый скрипт:

#!/bin/bash
sync
echo `date +%M:%S`
cp /volume1/a.tmp /volumeUSB1/usbshare
sync
echo `date +%M%S`
rsync /volume1/b.tmp /volumeUSB1/usbshare
sync
echo `date +%M:%S`

Каждый из файлов a.tmp и b.tmp имеет размер 1 ГБ, volume1 - это точка монтирования для внутреннего диска /volumeUSB1/usbshare - это точка монтирования диска USB 3.

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

1 ответ1

1

Вы ожидаете, что rsync будет медленнее, чем cp для первой копии, потому что он делает чуть больше "туда и сюда". Возможно, не займет в 3 раза больше времени, хотя.

Можно ожидать, что rsync будет медленнее при последующих копиях "обновления", если используется опция -c, а чтение и контрольная сумма - это дорогостоящая операция на целевой машине (медленный диск, медленный процессор или недостаточно памяти). Аналогично, это может быть медленно без -c, если есть большие файлы, и многие из них изменены.

Если вы забыли использовать -t как на начальном, так и на последующем запусках, то это также заставило бы rsync прочитать и проверить всю сумму файла.

По сути, каждый раз, когда rsync должен написать все (или почти все), тогда cp победит, поэтому вы должны быть осторожны, устанавливая параметры так, чтобы он мог выполнять как можно меньше работы.

Если rsync с полностью неизмененными файлами не завершается за время, необходимое для "статистики" каждого файла в дереве (на более медленном диске), то вы сделали что-то не так.


Другими проблемами при использовании rsync на медленных машинах являются издержки на сжатие и шифрование. Вы должны отключить эти параметры (или сделать так, чтобы они совпадали с тем, что вы используете для cp) в rsync и SSH, насколько это возможно. Конечно, SSH не будет полностью отключать шифрование, но вы можете настроить шифры в ~/.ssh/config (на другом компьютере); вот что я использую для своей Synology:

Host diskstation
    Ciphers arcfour256
    macs hmac-md5-96

где "disctation" - это IP-адрес вашего NAS.

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