Хотим рассказать о простом способе организовать автоматический перенос файлов из директории в операционной системе Windows с одного сервера на другой. Логически, конфигурацию можно поделить на 3 этапа:
- Создание и шаринг сетевой папки;
- Формирование batch (cmd) скрипта;
- Настройка компоненты Task Scheduler для выполнения задач и раз в минуту;
Приступаем к последовательной настройке.
Создание сетевой папки (шаринг)
Итак, дано: есть сервер А (источник файлов) и сервер Б (получатель файлов). На сервере А мы создали директорию, из которой мы будем забирать файлы. Мы назвали ее source, а на сервере Б, который является сервером назначения, мы создали директорию Destination, в которую мы будем складывать файлы. Разобрались.
Подключаемся к серверу Б. Создаем директорию Destination, нажимаем на нее правой кнопкой мыши, выбираем Properties (свойства). В открывшемся окне, переходим во вкладку Sharing (общий доступ) и нажимаем кнопку Share (общий доступ). Вот как эта опция выглядит в русской и английском интерфейсах:
![Сетевая папка в Windows | Шаринг Сетевая папка в Windows | Шаринг](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/1.png)
После нажатия, необходимо выбрать группы пользователей, которым будет видна эта директория. Если нет особых требований к безопасности и это изолированный сетевой сегмент или лаборатория, то можно выбрать Everyone (все). После выбора нажимаем Share. Готово, вот что у нас получилось:
![Шаринг папки в Windows Шаринг папки в Windows](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/2.png)
На скриншоте выше красным цветом отмечен Network Path (сетевой путь). Это путь, по которому мы будем обращаться к этой папке. Сохраните его.
Важно! Обратите внимание, что в Network Path, как правило, будет указан путь вида %ИМЯ_ХОСТА%/Destination, где %ИМЯ_ХОСТА% - это имя компьютера, на котором расположена папка Destination. Важно, чтобы это имя резолвилось (разрешалось в IP - адрес) на хосте, где будет размещена папка Source (это сервер А). Можете добавить это имя и IP – адрес в локальный файл C:WindowsSystem32driversetc в Windows.
Батник – batch скрипт
В самом начале статьи мы озвучили небольшой roadmap (дорожную карту) по нашим работам. На сервере А (источник файлов) создайте файл с названием movefiles.bat.
Важно! Расширение файла movefiles должно быть именно bat
В созданный файл добавляем следующий код:
robocopy C:Source \%ИМЯ_ХОСТА%Destination *.* /E /XD \%ИМЯ_ХОСТА%Destination /move
Если у вас не работает команда robocopy в скрипте, попробуйте заменить ее на xcopy
Сохраняем скрипт в корневом каталоге диска С, например.
Планировщик задач | Task Scheduler
Открываем Task Scheduler в Windows. После открытия, нажимаем на Create Basic Task в меню справа. Даем имя и описание нашему заданию:
![Шаринг папки в Windows Шаринг папки в Windows](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/3.png)
В меню далее выбираем ежедневное выполнение нашего скрипта:
![Task Scheduler Daily задача Task Scheduler Daily задача](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/4.png)
Ставим выполнение задачи на 00:00:00:
![Время выполнения задачи Время выполнения задачи](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/5.png)
В Action выбираем Start a program:
![Вид действия | Start a program Вид действия | Start a program](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/6.png)
Далее, указываем путь до нашего скрипта, который создавали ранее - movefiles.bat:
![Выполнение батника через планировщик в виндоуз Выполнение батника через планировщик в виндоуз](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/7.png)
В финальном окне смотрим, что у нас получилось. Если все ОК, как у нас, то нажимаем Finish:
![Задача в Task Scheduler создана успешно Задача в Task Scheduler создана успешно](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/8.png)
Отлично. Переходим в свойства свежесозданной таски (задачи) и во вкладке General отмечаем Run whether user is logged on or not и чекбокс Run with highest privileges.
![Run whether user is logged on or not Run whether user is logged on or not](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/9.png)
Далее, там же, в свойствах, переходим во вкладку Triggers, двойным нажатием открываем свойства уже созданного там триггера (Daily) и делаем вот что:
- Отмечает чекбокс Repeat task every;
- В поле, сразу после Repeat task every вписываем
1 mnute
;
![Repeat task every 1 minute Repeat task every 1 minute](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/10.png)
Нажимаем ОК.
Тестируем
Итак, давайте протестируем, что у нас получилось. На сервере А в папку Source кладем тестовый текстовый файл:
![Автоматический перенос тестового файла batch Автоматический перенос тестового файла batch](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/11.png)
Проверяем на сервере Б в директории Destination:
![Автоматический перенос тестового файла батником работает Автоматический перенос тестового файла батником работает](http://wiki.merionet.ru/images/batch-avtomaticheskij-perenos-fajlov-v-windows/12.png)