Параллельное копирование с использованием xcopy

Мне нужно скопировать несколько каталогов из одного места в другое. Итак, будет несколько операторов xcopy, один за другим.

Количество файлов в каждой из папок огромно. Есть ли способ, которым я могу запустить эти xcopy операторы параллельно? Я могу придумать один вариант - вызывать каждый xcopy в отдельном пакетном файле и вызывать эти пакетные файлы, используя @start вместо @call.

Есть ли другая альтернатива?


person Pramod Karandikar    schedule 09.02.2012    source источник


Ответы (1)


Вы можете запустить xcopy напрямую, вот так start xcopy [parameters]. Это позволяет запускать несколько экземпляров xcopy параллельно.

Кстати: вы пробовали robocopy? Он включен во все последние версии Windows и предлагает больше возможностей (а иногда и производительность), чем xcopy.

Но в целом параллельное копирование нескольких каталогов происходит медленнее (по крайней мере, при копировании с диска на другой), потому что это заставит исходный диск искать между заданиями параллельного копирования вместо последовательного чтения файлов.

person Simon    schedule 09.02.2012
comment
Я не пробовал использовать Robocopy. Он использует /MT[:number], верно? На самом деле мне нужно сделать это в Windows XP SP3, поэтому мне нужно явно получить Robocopy. Однако я не совсем понимал его /MT использование. Не могли бы вы уточнить? - person Pramod Karandikar; 09.02.2012
comment
robocopy по умолчанию уже использует 8 потоков для параллельного выполнения некоторых своих операций. Это означает, что вы можете использовать robocopy для параллельного копирования всех файлов каталога. Если вы указали, например, /MT:100, robocopy будет копировать до 100 файлов параллельно. Я бы не советовал так поступать - 8 - это достаточно. Поэтому, если вы действительно выбрали robocopy вместо xcopy, просто вызывайте его последовательно. Параллельно копируется первый каталог, затем второй каталог и так далее. - person Simon; 10.02.2012
comment
Могу подтвердить комментарий Саймона. Я измерил ROBOCOPY из огромного удаленного каталога с выводом сборки с использованием /MT:%NUMBER_OF_PROCESSORS% по сравнению с /MT:100, и последний работал в среднем на 66% быстрее на четырехъядерном i5-6500. Хотел бы я знать об этом уровне гибкости давным-давно! - person kayleeFrye_onDeck; 31.03.2017