Как работает File.Копирование работает?

#.net #performance #file-io

#.net #Производительность #file-io

Вопрос:

Допустим, у меня есть консольное приложение, которое работает на Machine1. Что происходит в фоновом режиме, если это приложение копирует файл из общего сетевого ресурса на компьютере 2 в общий сетевой ресурс на компьютере 3?

Передается ли это непосредственно из Machine2 в Machine3 или должно проходить через Machine1, поскольку именно оттуда запускается приложение?

Причина, по которой я спрашиваю, заключается в том, что я недавно написал приложение, которое делает это, и для завершения требуется около часа (огромный файл). Когда я разговаривал с человеком, задачу которого я автоматизировал, они сказали, что это завершится примерно через 15 минут, когда они войдут в Machine2 и скопируют в Machine3.

Я использую файл.Метод копирования.

Комментарии:

1. Я скучаю по старым временам Netware с командой ncopy , которая копировала файлы непосредственно на сервер или между разными серверами, без передачи данных через клиент … это были времена…

Ответ №1:

Если вы используете Machine1, любая стандартная операция копирования файла должна будет получить данные из Machine2 и отправить их на Machine3 (дважды пройдя по сети). FTP — это единственный известный мне протокол, в котором предусмотрены условия для копирования файлов между двумя серверами с третьего сервера без необходимости третьему серверу отправлять и получать данные.

Ответ №2:

Файл загружается на ваш компьютер, а затем снова загружается на конечный компьютер, да.

Ответ №3:

Я сам этого не пробовал, но одним из способов может быть использование Powershell для вызова небольшого скрипта на Machine1, который копирует файл непосредственно в Machine2.

Существует блог msdn о том, как вызвать PS-скрипт из C #. Если вы объедините это с этой статьей WindowsITPro о том, как вызывать команды удаленно, это может сработать.