У меня есть текстовый файл, который имеет ~ 500 000 полных путей. Я хочу скопировать их на NAS один раз. Это около 1 ТБ данных. Должен ли я сделать zip-файл со всеми файлами или скопировать их по отдельности? Как я могу сделать либо автоматически?
1 ответ
Вы можете сделать это с помощью команды оператора For
из командной строки или пакетного сценария.
For /f %f in (list.txt) do xcopy "%f" \\NasName\dest [switches]
Типичные выключатели:
/C
Продолжает копирование, даже если возникают ошибки./I
Если место назначения не существует и копируется более одного файла, предполагается, что место назначения должно быть каталогом./H
Копирует также скрытые и системные файлы./R
Перезаписывает файлы только для чтения./Y
Подавляет запрос на подтверждение перезаписи существующего файла назначения.
Выполните вышеуказанную команду и уйдите на несколько часов. Если пути являются надежными в вашем файле списка, замените %f
на C:\path\to\source\%f
Не забывайте, что вам понадобятся привилегии для чтения файла, чтобы скопировать их, поэтому, если какие-либо ваши файлы находятся в ограниченных папках (например, в папках документа других пользователей), вам нужно будет запустить командную строку / командный файл от имени администратора. Также, если вы запустите это в пакетном файле, вам нужно будет заменить один %
на %%
Если вы перечислите 500 000 файлов, это просто все файлы в c:\somepath
вы можете просто использовать Robocopy
вместо xcopy
+ for
выписки
robocopy c:\somepath \\NasName\dest [switches]
Я бы порекомендовал следующие переключатели
/s
Копирует подкаталоги. Обратите внимание, что эта опция исключает пустые каталоги./zb
Использует режим перезапуска. Если доступ запрещен, эта опция использует режим резервного копирования./MT
Создает многопоточные копии (работает только на Server 2008 R2 и Windows 7)/LOG:<logfile>
Записать результаты в файл вместо консоли (это повысит производительность/MT
)