1

У меня жесткий диск с плохой платой. Он остается включенным, когда не находится под большой нагрузкой, и перезапускается, если я скопирую из него слишком много данных. До сих пор мне повезло, когда я создавал папки размером менее 500 МБ, если я скопировал одну папку на свой жесткий диск, подождал пять минут, скопировал другую и т.д.

Если я подключу неисправный диск и попытаюсь скопировать папку размером в несколько ГБ, она запустится и остановится при перезагрузке жесткого диска. Когда я пытаюсь снова смонтировать диск, Linux говорит, что не может прочитать суперблок. У меня есть несколько папок с более чем 30 ГБ данных в разных папках.

То, что я ищу, - это способ копирования папки в Linux, чтобы команды захватывали всю папку порциями с временным перерывом между ними.

3 ответа3

3

Вы можете остановить процесс копирования через некоторое время:

cp -R srcdir destdir &
sleep 10
kill -STOP $PID_OF_CP
sleep 10
kill -CONT $PID_OF_CP
2

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

tar cf - <source> | pv --rate-limit 1m | (cd <destination> && tar xf -)

Я не проверял это сам, поэтому синтаксис может быть немного не так.

-1

Вы можете сначала минимизировать вес файла, который будет передан, используя максимальное сжатие gzip, затем rsync tarballs с опцией тайм-аута. Также вы можете запустить rsync во второй раз, если ваш хороший диск исчезнет. Rsync будет просматривать файлы в обоих местах и копировать разницу: он продолжит копирование с момента, когда синхронизация была прервана.

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