В сегодняшней статье я хотел бы поговорить о встроенном функционале MS Windows. О котором наверняка знают и помнят "олды", но отнюдь далеко не все молодые специалисты. Представим, что вам необходимо перенести большой объём информации с одного ресурса на другой, причем источник и целевой ресурс может быть как локальный, так и удаленный (сетевой). Вы можете не беспокоиться о том, что внезапно может отвалиться канал передачи данных или о длинных путях и названиях папок, можете регулировать количество потоков и забить нафиг весь свой канал только этой задачей, если это конечно вам нужно. Так же у данной утилиты есть GUI интерфейс, лично я им практически никогда не пользуюсь. Ко всему прочему добавлю, что данную утилиту применяют даже крупнейшие системные интеграторы при миграции файловых ресурсов. А работа с этой утилитой проста как две копейки.
И так речь о встроенной утилите MS Windows - Robocopy. На просторах интернета есть куча информации по работе с данной утилитой, поэтому я не буду здесь расписывать все существующие параметры, а лишь познакомлю вас с основами.
Идем на диск C:\ и вбиваем в строку поиска "robocopy".
Видим, что данная утилита присутствует в C:\Windows\System32, а значит, можем обращаться к ней прямо из командной строки.
Запускаем командную строку cmd.exe и пишем robocopy /?, получаем список всех параметров данной утилиты.
От слов к делу, потренируемся на примере. Допустим, у нас есть два офиса - А и Б. Между ними узкий канал передачи данных. Есть файловый ресурс в офисе А, офису Б нужна точная реплика данного ресурса в своей локальной сети, так как ходить каждый раз на ресурс в офисе А не позволяет узкий канал. Допустим, ресурс в офисе А называется share. Сетевой адрес данного ресурса \\192.168.0.112\share.
Заходим на файловый сервер в офисе Б и монтируем диск с любой буквой, у нас это будет "X", адрес ресурса - \\192.168.0.112\share.
Создаем .bat файл, как его создать я подробно описывал в своем посте про автоматизацию перезагрузки и выключения ПК. Содержимое нашего батника будет следующим:
robocopy X:\ D:\zerkalo /E /Z /DCOPY:T /M /R:2 /W:5 /MT:64
где:
X:\: источник
D:\zerkalo: наша целевая папка
/E : копируем все подпапки и файлы
/Z : включаем поддержку докачки (на случай обрыва связи)
/DCOPY:T : копируем время создания папок
/M : копируем только файлы с установленным атрибутом «A — Архивный» и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы.
/R : количество повторных попыток копирования файла в случае, если копирование не удалось. Причем «не удалось» срабатывает и в том случае, если доступ к файлу закрыт. По умолчанию = 1 миллион, т.е. бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа.
/W : Задержка в секундах между попытками копирования. По умолчанию = 30 секунд.
/MT — кол-во потоков, увеличив которые можно ускорить копирование. Будет быстрее чем обычное копирование файла точно, но канал тем самым будет сильнее загружен.
В итоге нам остается закинуть данный батник в планировщик задач и настроить запуск задачи по расписанию, допустим только в ночное время. Как создавать задачу по расписанию в планировщике я подробно рассказывал в предыдущей статье.
Еще больше годных статей на моем канале в телеграм.
Ссылка на первоисточник, (где я впервые опубликовал данную статью).