Як скопіювати дані в LInux на шматки та з тимчасовими перервами?


1

У мене жорсткий диск з поганою платою друкованої плати. Він залишається увімкнутим, коли він не знаходиться під великим навантаженням, і перезапуститься, якщо я скопіюю з нього занадто багато даних. Поки мені пощастило робити папки розміром до 500 Мб, якщо я копіюю одну папку на мій хороший жорсткий диск, чекаю п'ять хвилин, копіюю іншу тощо.

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

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

Відповіді:


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 вдруге, якщо ваш гарний диск згасне. Rsync перегляне файли в обох місцях і скопіює різницю: продовжить копію з того моменту, коли синхронізація була перервана.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.