Как копировать каталог и игнорировать ошибки

Вот решение, которое работает...; http://www-01.ibm.com/support/docview.wss?uid=isg1OA32717

Загрузить сертификат в какое-то место с каким-то именем, установить env, который указывает на него..; экспорт CURL_CA_BUNDLE='/root/cacert.pem'

1
07.01.2017, 23:14
2 ответа

Вы можете использовать следующую команду

cp -r -v sourcepath destinationpath 2>/dev/null

it will nullify errors when error is trigerred
0
28.01.2020, 01:04

У меня была похожая проблема, когда мне нужно было скопировать файлы из одного каталога в другой и продолжить при ошибках . Идея заключалась в том, чтобы скопировать как можно больше с помощью операционной системы(в моем случае инструмента Debian ), а затем вручную обработать возможные ошибки.

Я использовал подсказку Жюли Пеллетье , представленную в ее комментарии киспользованиюrsync. Также я использовал этот ответ в качестве шаблона, так как хотел иметь возможность анализировать неудачные операции копирования.

Таким образом, решение для вашего случая может быть

rsync --archive --itemize-changes --delete /d/ /sdcard/test/

Объяснение:rsyncкопирует содержимое исходного пути(/d/)в целевой путь(/sdcard/test/). Если содержимое уже существует в вашем целевом каталоге, будут записаны только различия (delta -transfer ). Это позволяет прервать и продолжить процесс в любой момент. О сбоях будет сообщено без остановки всей операции копирования. rsyncпо умолчанию выполняет только «быструю проверку», используя размер файла и время последнего изменения. Можно установить дополнительные критерии (, см. ниже ).

  • --archiveзадает набор атрибутов файлов и каталогов, которые необходимо проверить на наличие различий
  • --itemize-changesпредписывает печатать сводку по каждому файлу. Это очень полезно для понимания того, почему файл считается отличным от rsync. Это помогло мне понять сбои операции копирования. Сообщение довольно загадочное, проверьте справочную страницу, чтобы лучше понять его.
  • --deleteуказывает на удаление файлов в целевом расположении, которых нет в исходном расположении.

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

rsync --recursive --links --safe-links --times --group --owner --devices --specials --delete --human-readable --stats --verbose --itemize-changes --progress --modify-window=3 source/ target/

Наиболее заметными изменениями являются:

  • --safe-linksдля копирования только символических ссылок внутри копируемого дерева
  • Нет--perms(подразумевается --archive), так как права доступа не были правильно установлены для целевой файловой системы
  • --modify-window=NUMустанавливает допуск для времени последней модификации, так как они были неправильно установлены в целевой файловой системе
1
28.01.2020, 01:04

Теги

Похожие вопросы