Когда я начинаю копировать очень большую папку (скажем, 40 ГБ) в Windows 7 File Explorer, скорость выполнения показывает, что для ее завершения могут потребоваться часы. Поэтому я оставляю это на ночь, только чтобы обнаружить утром, что он все еще утверждает, что пытается копировать (он потерпел неудачу, но все еще находится в процессе выполнения).

Есть ли способ скопировать большую папку с высокой степенью уверенности в том, что она будет успешно завершена, или, по крайней мере, она завершит работу и отобразит сообщение об ошибке, если возникнет проблема?

1 ответ1

0

Использование проводника Windows для копирования большой папки, действительно, не очень полезно по двум причинам.

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

Например, копирование файла может произойти сбой, потому что среди 40 ГБ данных был один недопустимый ярлык, где цель отсутствовала. Это не удастся выполнить копирование, но пользователь будет знать об этом, и это будет выглядеть так, как будто копирование еще продолжается. Могут быть и другие причины неудач, которых мы не знали бы.

Решения:

  1. Лучше всего копировать большие папки в командной строке и использовать `xcopy '. Преимущество заключается в том, что если он потерпит неудачу, он немедленно вернется, и вы будете знать. Это сказало, что это все еще потерпит неудачу с вышеупомянутой ситуацией (недопустимый ярлык), но выдаст ошибку правильно.
  2. Лучший выбор - развернуть скрытую копию, которая не заботится о файлах, а копирует биты в биты. Лучшими инструментами являются scp или rsync но они не всегда доступны в Windows.

Использование SCP в Windows

Установите cygwin в Windows и используйте команду scp из его оболочки следующим образом, предполагая скопировать c:\BigFolder на USB-накопитель F:\BigFolderBackup/

scp -r /cygdrive/c/BigFolder/ /cygdrive/f/BigFolderBackup/

Где -r для рекурсивного копирования, что означает копирование всех подпапок и их файлов.

Обновление 1

Как отметил Скотт в комментариях, его копия на локальной машине, так что cp тоже подойдет. Синтаксис по сути идентичен.

Другой сценарий, с которым я столкнулся, - это когда папка содержит файл, в котором у меня не было разрешений на чтение. Наш ИТ-отдел не позволяет пользователям запускать утилиту CCleaner, поэтому разрешение на чтение для нее отключено.

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

Обновление 2

Я обнаружил, что scp (и, вероятно, cp) изменяет владельца файла, что может вызвать проблемы с доступом для чтения / записи. Добавление флага p должно решить эту проблему, как указано в этой статье. Другой способ - использовать rsync с флагами -o и -g как отмечено в этом ответе, для сохранения прав собственности на файлы.

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