Я пытаюсь скопировать содержимое неисправного флэш-накопителя USB. Если я читаю данные слишком быстро, микросхема контроллера накопителя перегревается и накопитель исчезает из системы. Когда это происходит, мне нужно отключить диск, подождать минутку или около того, чтобы он остыл, снова подключить его и перезапустить копию.
У меня есть старая резервная копия содержимого диска, поэтому очевидный способ получить оставшуюся часть данных - использовать ее rsync
для обновления резервной копии, но это приводит к целому «слишком быстрое чтение, диск исчезает» и мне нужно начать заново ». Есть ли способ сказать, rsync
чтобы прочитать только X мегабайт данных в минуту? В качестве альтернативы, можно ли сказать ему, чтобы приостановить операции, когда диск исчезает, и возобновить, когда он снова подключен?
Ответы:
В отличие от опыта DopeGhoti, этот
--bwlimit
флаг ограничивает передачу данных с помощью моего rsync (v3.1.2).тест:
(примечание: мой
time
вывод выглядит иначе, чем большинствоtime
вызовов (zsh
функция), эти времена не редактировались мной)В противном случае, возможно , что - то вдоль линий двойного
-exec
дюймаfind
. Я считаю, чтоrsync -R
следует создавать и копировать родительские папки, но если это не так, тоcp --parents
следует.Примечание : также проверьте ddrescue , это может быть правильным, что вы ищете :)
источник
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
руководства конкретно сказано: нет упоминаний о сети. Случайный просмотр кода, это ограничивает скорость чтения , независимо от места назначения. Плюс, анекдот: я использую эту опцию в течение многих лет, чтобы ограничить локальную скорость записи. linux.die.net/man/1/rsyncio.c
, строки 832-3:if (bwlimit_writemax) sleep_for_bwlimit(n);
в любом случае, это, вероятно, будет работать так, как задумано, читать короткими очередями и спать между ними. Я бы порекомендовал начать с низкого значения и осторожно увеличивать, или просто позволить медленной передаче работать всю ночь.В некотором роде решение MacGyver, но в прошлом у меня был хороший успех:
поместите старый USB 1-хаб между флешкой и компьютером. Ни в коем случае, черт возьми, он так быстро не скопирует :-)
Другая возможность: если у вас есть другая доступная флешка, подключите ее к другому USB-порту, подключенному к тому же корневому концентратору (чтобы он разделял пропускную способность с вашей проблемной флешкой).
Теперь запустите большую операцию записи на дополнительную палку, чтобы обе палочки конкурировали за пропускную способность. Для дальнейшего контроля вы можете использовать ionice, чтобы еще больше снизить приоритет на проблемной ручке.
источник
Вы можете использовать
rsync --bwlimit=RATE
для регулирования скорости передачи файлов, которая, основываясь на комментариях ниже, на самом деле, по-видимому, работает, ограничивая скорость чтения данных, которая является именно тем, что вы ищете.источник
ionice
? linux.die.net/man/1/ionice--bwlimit
устанавливает лимит ввода-вывода, а не обязательно лимит сети . Протестировано много раз в различных сценариях: эта опция заставляет rsync ограничивать чтение независимо от места назначения. (Обнаружено это в похожем сценарии, когда быстрые записи на медленное локальное устройствоБольше решений, в дополнение к
rsync --bwlimit=100
, для 100 КБ / с.Используйте
ddrescue
с--max-read-rate
опцией для полной копии диска. Это также позволит вам перезапустить полную копию диска, где он остановился после ошибки.ddrescue
Также есть много других опций, относящихся к восстановлению данных, см. руководство здесь .Используйте
pv
(«просмотрщик труб») с--rate-limit
параметром илиthrottle
инструментом для ограничения количества труб.pv
также может показать прогресс. Вы можете сделать эту работу для любого инструмента, который использует трубу или может использовать трубу:или
Взгляните на страницу руководства pv для получения дополнительных настроек и примеров. Для
throttle
, вы можете также попробовать-w
опцию, которая определяет, как рассчитывается скорость, см. Справочную страницу газа .источник
pv
У manpage есть еще больше примеров различных применений.pv
тех пор я снова и снова открываю для себя дни, когда я играл на кассетах. Назад, когда tar записывал на ленточные накопители. :)