Использование проводника Windows для копирования большой папки, действительно, не очень полезно по двум причинам.
- Основная причина в том, что копирование файла может произойти сбой по той или иной причине, но он никогда не вернется, и будет выглядеть так, как будто копирование все еще продолжается, где, на самом деле, он просто застрял. Это может тратить много времени на пользователя.
- Если это не удалось из-за ошибки, это не говорит, почему это не удалось, в чем проблема.
Например, копирование файла может произойти сбой, потому что среди 40 ГБ данных был один недопустимый ярлык, где цель отсутствовала. Это не удастся выполнить копирование, но пользователь будет знать об этом, и это будет выглядеть так, как будто копирование еще продолжается. Могут быть и другие причины неудач, которых мы не знали бы.
Решения:
- Лучше всего копировать большие папки в командной строке и использовать `xcopy '. Преимущество заключается в том, что если он потерпит неудачу, он немедленно вернется, и вы будете знать. Это сказало, что это все еще потерпит неудачу с вышеупомянутой ситуацией (недопустимый ярлык), но выдаст ошибку правильно.
- Лучший выбор - развернуть скрытую копию, которая не заботится о файлах, а копирует биты в биты. Лучшими инструментами являются
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
как отмечено в этом ответе, для сохранения прав собственности на файлы.