36

Я использую rsync для синхронизации каталога на моем внешнем жестком диске USB. Это около 150 гигабайт данных. 50000+ файлов, я думаю.

Сейчас он запускает первую синхронизацию, но копирует файлы со скоростью всего 1-5 МБ / с. Это кажется невероятно медленным для корпуса USB 2.0. Других передач на диске тоже нет.

Вот варианты, которые я использовал:

rsync -avz --progress /mysourcefolder /mytargetfolder

Я использую Ubuntu Server 9.10.

5 ответов5

34

Если вы используете rsync с быстрой сетью или с диска на диск на той же машине,

не использует сжатие -z

и используя --inplace

ускоряет его до производительности жестких дисков или сети

сжатие использует много процессора

не используя InPlace делает Жёсткий трэш много (он использует временный файл , прежде чем создавать окончательный)

сжатие и не использование на месте лучше делать через Интернет (медленная сеть)

НОВОЕ: знать о месте назначения ... если включено NTFS-сжатие ... это сильно тормозит большие файлы (я бы сказал, 200 МБ +), rsync почти застопорился, это вызвано этим.

32

Для первой синхронизации просто используйте

cp -a  /mysourcefolder /mytargetfolder

rsync добавляет накладные расходы только тогда, когда место назначения пусто.

Кроме того, опция -z, вероятно, снижает производительность, ее не следует использовать, если вы не передаете данные по медленной ссылке.

21

Используйте опцию -W . Это отключает дельта / сравнения сравнения. Когда время / размеры файла различаются, rsync копирует весь файл.

Также удалите опцию -z . Это полезно только для сжатия сетевого трафика.

Теперь rsync должен работать так же быстро, как и cp .

4

Первое - количество файлов в этом случае будет основным фактором. Это средний размер 3 МБ каждый. Вероятно, узкое место io влияет на скорость в случае OP. Больше здесь - это довольно сухое чтение, но изображение на обложке того стоит.

Итак, используя rsync для копирования в пустой каталог? Вот несколько способов ускорить его:

  1. Нет -z - определенно не используйте -z как в ОП.
  2. --no-compress может ускорить вас. Это может оказать наибольшее влияние... мой тест был 13 000 файлов, общий размер 200 МБ и использование rsync 3.1.3. Я синхронизировался с другим разделом на том же внутреннем диске SSD. С --no-compress я получаю 18 МБ / с, а без него - 15 МБ / с. cp, кстати, получает 16 МБ / с. Это намного меньше, средний размер файла. Кроме того - я не могу найти документацию для --no-compress. Я узнал об этом из этого поста на stackexchange.com.
  3. -W копировать файлы целиком - всегда используйте это, если вы не хотите сравнивать различия; не берите в голову, что смысл rsync состоит в том, чтобы сравнить различия и только обновить изменения.
  4. -S хорошо обрабатывать разреженные файлы - не повредит, если у вас нет разреженных файлов.
  5. --exclude-from или что-то подобное для исключения файлов, которые вам могут не понадобиться, сократят время, но не увеличат скорость передачи.
  6. Это возможно, если вы отправите вывод в файл, подобный следующему:rsync -a /source /destination >/somewhere/rsync.out 2>/somewhere/rsync.err - первый> в основном печатает файл со всеми материалами, которые вы обычно видите и 2> относится к сообщениям об ошибках.
  7. Наконец, может помочь запуск нескольких экземпляров rsync для разных частей вашего перевода.

Моя команда будет:

rsync -avAXEWSlHh /source /destination --no-compress --info=progress2 --dry-run

Если бы все выглядело хорошо, я бы удалил «--dry-run» и отпустил его. A, X и E охватывают расширенные атрибуты и разрешения, не охватываемые -a, l - для мягких ссылок, H - для жестких ссылок, а h - для чтения человеком.

Обновление уже синхронизированного каталога на USB-накопителе, или на том же диске, или по сети, потребует различных команд rsync для максимизации скорости передачи.

Бонус - вот справочная страница rsync, и если вы хотите проверить скорость вашего жесткого диска, bonnie++ - хороший вариант, а для скорости вашей сети попробуйте iperf.


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

1

Вы не говорите, какой размер у ваших файлов. Если имеется много небольших файлов, то это снизит общую скорость передачи за счет увеличения задержки перемещения головки как на исходном, так и на целевом дисках, поскольку инструмент открывает новые файлы, а ОС сохраняет записи каталога и другие метаданные (например, журнал файловой системы, если вы используете ведение журнала метаданных (например, ext3/ext4 и NTFS) по умолчанию во время передачи. Процесс копирования файла будет "в ходу" только для больших объектов, когда происходит простая массовая передача.

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