Вопрос или проблема
Мне нужно скопировать несколько Гб с внешнего жесткого диска на основной жесткий диск, и некоторые файлы вызовут ошибки. Если я сделаю это с помощью Finder, он остановится при первой ошибке.
Есть ли способ скопировать все, независимо от ошибок? Что-то вроде копирования с помощью Teracopy для Windows?
В терминале введите
cp -Rp /Volumes/<source-volume>/<source-user>/<source-folder>/ /Volumes/<destination-volume>/<destination-folder>/
Папка назначения должна быть новой папкой, которую вы создаете.
Если вы получите информацию о новой папке после выполнения этой команды, вы увидите, как увеличивается размер папки.
Пример
cp -Rp /Volumes/Macintosh HD/User/Bob/Desktop/stufftocopy/ /Volumes/external/newfolder
Он будет копировать и отображать ошибки для всего, что не может быть скопировано, но не останавливается.
*Если в именах каталогов содержатся пробелы, оберните путь в кавычки
Пример
cp -Rp "/Volumes/Macintosh HD/User/Bob/Desktop/stufftocopy/" /Volumes/external/newfolder
Объяснение:
выполните “man cp”, чтобы увидеть описание команды и все опции
Как в Mac OSX 14.6.1 (23G93) аргументы “-Rp” означают:
-R:
-R Если source_file обозначает каталог, cp копирует каталог и все поддерево, подключенное в этой
точке. Если source_file заканчивается на /, копируются содержимое каталога, а не сам каталог.
Эта опция также заставляет копировать символические ссылки, а не путём переадресации,
и cp создавать специальные файлы, а не копировать их как обычные файлы. Созданные каталоги имеют
тот же режим, что и соответствующий исходный каталог, неизменённый umask процесса.
В режиме -R cp будет продолжать копирование, даже если обнаружены ошибки.
Обратите внимание, что cp копирует файлы с жесткими связями как отдельные файлы. Если вам нужно сохранить жесткие связи, подумайте
об использовании tar(1), cpio(1) или pax(1) вместо этого.
-p:
-p Заставляет cp сохранять следующие атрибуты каждого исходного файла в копии: время модификации,
время доступа, флаги файла, режим файла, идентификатор пользователя и идентификатор группы, как это разрешается правами доступа.
Списки управления доступом (ACL) и расширенные атрибуты (EAs), включая ресурсные вилки, также будут сохранены.
Если идентификатор пользователя и идентификатор группы не могут быть сохранены, сообщение об ошибке не отображается, и код выхода
не изменяется.
Если у исходного файла установлен бит set-user-ID и идентификатор пользователя не может быть сохранён, бит set-user-ID
не сохраняется в разрешениях копии. Если у исходного файла установлен бит set-group-ID и идентификатор группы не может быть сохранён,
бит set-group-ID не сохраняется в разрешениях копии. Если у исходного файла установлены оба бита set-user-ID и set-group-ID,
и либо идентификатор пользователя, либо идентификатор группы не могут быть сохранены, ни бит set-user-ID, ни бит set-group-ID
не сохраняются в разрешениях копии.
Вы можете использовать cp
так, как предложено, или rsync
, но в случае ошибки ввода/вывода иногда это не сработает.
Поэтому в этом случае вы можете использовать утилиту dd
для конкретных файлов, которые были повреждены.
dd
означает “дублирование диска”. Это утилита командной строки, включенная в Mac OS X. Бесплатная версия также доступна для Windows.Будьте крайне осторожны, даже если вы знакомы с командной строкой, потому что dd может причинить непоправимый ущерб вашим данным, если вы неправильно укажете входные и выходные параметры. Вас предупредили.
Аргументы dd просты:
- if=путь_к_файлу_с_ошибками_ввода/вывода указывает путь к исходному файлу
- of=путь_к_чистой_копии_для_создания указывает путь к выходному файлу
- conv=noerror,sync делает dd устойчивым к ошибкам
Ваш выходной путь не должен быть на том же диске, что и поврежденный файл. На самом деле, вам не следует продолжать использовать карту или диск с ошибками ввода/вывода, так как это может вызвать больше проблем в будущем. После восстановления данных вам следует избавиться от него или использовать только для хранения неважных данных.
Из-за ошибок ввода/вывода dd может занять больше времени на создание чистой копии, чем при обычном копировании.
Но это действительно стоит ожидания, потому что теперь у нас есть чистый файл, на котором мы можем использовать наш арсенал диагностических, предварительных и инструментов для восстановления видео.
Ошибки ввода/вывода — это серьезный вопрос, и избавление от карты после восстановления видео, вероятно, ПРАВИЛЬНАЯ ВЕЩЬ, КОТОРУЮ СТОИТ СДЕЛАТЬ. Вы также должны учитывать, что часть отснятого материала не будет восстановлена или будет иметь качество ниже среднего.
Источник: http://aeroquartet.com/wordpress/2012/06/06/how-to-copy-a-file-with-io-errors/
Пример:
dd if=/Volumes/CD/broken_movie.avi of=~/Movies/broken_movie.avi conv=noerror,sync
Также смотрите:
Я использую Beyond Compare именно для этой цели (это коммерческое программное обеспечение, но имеет бесплатную пробную версию). Вы указываете ему скопировать файл, папку или целый диск или любую комбинацию, и он завершает задачу до конца, сообщая о проблемах по мере их появления. Это не помогает восстановить поврежденные файлы, но завершит работу, независимо от количества возникших проблем.
Teracopy выпустила версию для Mac, которую вы можете скачать в Apple Store.
Ответ или решение
Для копирования множества файлов на macOS без прерывания на ошибках существует ряд методов и инструментов. Основная проблема, описанная в вопросе, заключается в том, что стандартное приложение Finder прерывает процесс копирования при возникновении первой ошибки. Это может быть крайне неудобно при больших объемах данных и наличия поврежденных файлов.
Теория
Для эффективного копирования файлов без прерывания можно использовать команду cp
в Терминале. Данная команда позволяет указать параметры, при которых будет игнорироваться большинство ошибок, а процесс копирования продолжится. Использование cp
с параметрами -Rp
позволяет рекурсивно копировать директории, при этом сохраняя атрибуты файлов, такие как время модификации, доступ, и права доступа.
Другой подход – использование rsync
, который также способен продолжать процесс копирования, даже если возникают определенные ошибки. Этот инструмент позволяет более точно настраивать параметры копирования.
Если же на носителе имеются физически поврежденные сектора, и вы сталкиваетесь с ошибками ввода-вывода (I/O Errors), может понадобиться использование dd
. Эта команда создаст копии поврежденных файлов, стараясь игнорировать ошибки чтения, что делает ее полезной в ситуациях, когда стандартные инструменты не справляются.
В случае, если предпочтителен графический интерфейс, можно обратиться к коммерческому ПО, например, Beyond Compare
или найти версии, такие как TeraCopy
для macOS. Эти программы предлагают более интуитивно понятный интерфейс и позволяют завершить копирование с подробной отчетностью о возникших ошибках.
Пример
- Копирование с использованием
cp
:
Параметры -Rp
задают рекурсивное копирование и сохранение атрибутов файлов, а также допускают продолжение копирования при возникновении ошибок. Пример команды:
cp -Rp "/Volumes/Macintosh HD/User/Bob/Desktop/stufftocopy/" /Volumes/external/newfolder
- Использование
rsync
:
Это мощная команда, предлагающая множество опций для точной настройки копирования. Например:
rsync -av --ignore-errors "/Volumes/Macintosh HD/User/Bob/Desktop/stufftocopy/" /Volumes/external/newfolder
- Применение
dd
для восстановления файлов с I/O ошибками:
dd if=/Volumes/CD/broken_movie.avi of=~/Movies/broken_movie.avi conv=noerror,sync
Этот подход полезен для восстановления данных с поврежденных носителей.
Применение
В зависимости от ваших потребностей и опыта с командной строкой, вы можете выбрать один из предложенных методов. Команда cp
с параметрами -Rp
подходит для простых случаев, когда на кону не стоят физические повреждения носителя. Для более сложных сценариев rsync
предлагает богатый набор опций и может быть настроен так, чтобы игнорировать определенные ошибки, не прекращая процесс.
Если основная проблема заключается в ошибках ввода-вывода, то dd
может стать вашим выбором. Эта команда позволяет создать рабочую копию, игнорируя ошибки физических чтений, что в стандартных условиях приводит к прерыванию процесса.
Графический интерфейс может облегчить процесс обработки большого количества файлов, и здесь Beyond Compare
или новая версия TeraCopy
для macOS может стать отличным решением, особенно для пользователей, предпочитающих работать без командной строки.
В любом случае важно провести проверку целостности перед копированием большого количества данных, особенно если предполагается, что данные могут быть повреждены. После завершения процесса копирования рекомендуется проверить целостность файлов и рассмотреть возможность создания резервных копий для дальнейшей безопасности.