1

Я должен перенести> 2G папки с 196K файлами с одного внешнего жесткого диска на другой. Более старый диск имеет некоторые проблемы, поэтому при передаче возникает ошибка. Я пропускаю файлы, в которых есть проблема. После успешной передачи существует эффективный способ выяснить, какие файлы не были переданы (или частично переданы). Я ищу способ сделать это на Windows или Linux (Centos/Ubuntu)

2 ответа2

1

старый диск имеет некоторые проблемы

Какие проблемы? Вы имеете в виду, что это дает случайные ошибки чтения?

Если старый диск не работает правильно, невозможно надежно узнать, правильно ли были переданы данные, потому что вы даже не можете быть уверены, читаете ли вы правильные данные с физического носителя в первую очередь!

Например:

  • Чтобы рассчитать сумму файла MD5 или SHA1, вы должны прочитать весь файл с диска. Что если диск молча (без ошибки) считывает неправильные биты? Вы получаете другой хэш. Что если вы затем прочитаете его снова, и во второй раз он прочитает его правильно, и тогда вы копируете его на другой диск? Тогда у вас будут "правильные" данные на новом диске, и хеш не будет соответствовать тому, что вы рассчитывали изначально.

  • Чтобы "удалить" файл (если вы его переместили), вы должны записать метаданные файловой системы на старом диске. Если диск выходит из строя, я определенно не буду доверять его записи ; читает достаточно плохо. Трудно сказать, что просто включение двигателя может привести к его деградации.

  • Записать хеш (суммы MD5/SHA1) на старый диск, который будет считывать и записывать на него, что на самом деле не рекомендуется.

На этом этапе, если вы вообще цените то, что у вас есть на старом диске, я настоятельно рекомендую вам отключить старый диск и попросить профессионального эксперта по восстановлению данных восстановить с него как можно больше данных.

Если вы этого не делаете, вы играете с огнем. В любой момент вы можете потерять все свои данные. И даже когда вы пытаетесь скопировать файлы, вы можете копировать все более испорченные данные и усугублять ситуацию. Я не знаю, насколько серьезен сбой вашего диска, но определенные условия могут сделать это чрезвычайно чувствительным ко времени. Опять же, если данные вообще ценны или незаменимы, остановите то, что вы делаете, и отключите диск.

В будущем я настоятельно рекомендую использовать одну из следующих файловых систем на любом диске, содержащем незаменимые данные. Эти файловые системы являются "очевидными для сбоя", потому что все данные проверяются контрольной суммой, поэтому, если диск считывает данные неправильно (так называемое "скрытое повреждение"), файловая система знает об этом и может сообщить об ошибке. Вам очень повезло в том, что вы уже получаете уведомления от вашей ОС о том, что файлы копируются неправильно; диски могут выходить из строя тихими коварными способами, которые контроллер диска не может обнаружить, что может привести к повреждению диска без уведомления ОС в файловой системе без проверки контрольных сумм.

Следующие современные файловые системы поддерживают контрольные суммы:

  • Btrfs в Linux
  • ZFS в Linux, BSD или Solaris
  • ReFS на Windows Server 2012 или Windows 8.1 (хотя вы не можете загрузиться с ReFS, поэтому вам понадобится системный раздел NTFS)
0

Функция rsync позволяет копировать только те файлы, которых еще нет, и по умолчанию обновляет только измененные файлы. Он также может сравнивать простые хэши файлов в источнике и месте назначения, чтобы проверить, правильно ли они скопированы с опцией -c.

У него много опций для настройки того, что и как он копирует. http://linux.die.net/man/1/rsync

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