img

Batch: автоматический перенос файлов в Windows

Хотим рассказать о простом способе организовать автоматический перенос файлов из директории в операционной системе Windows с одного сервера на другой. Логически, конфигурацию можно поделить на 3 этапа:

  1. Создание и шаринг сетевой папки;
  2. Формирование batch (cmd) скрипта;
  3. Настройка компоненты Task Scheduler для выполнения задач и раз в минуту;

Приступаем к последовательной настройке.


Создание сетевой папки (шаринг)

Итак, дано: есть сервер А (источник файлов) и сервер Б (получатель файлов). На сервере А мы создали директорию, из которой мы будем забирать файлы. Мы назвали ее source, а на сервере Б, который является сервером назначения, мы создали директорию Destination, в которую мы будем складывать файлы. Разобрались.

Подключаемся к серверу Б. Создаем директорию Destination, нажимаем на нее правой кнопкой мыши, выбираем Properties (свойства). В открывшемся окне, переходим во вкладку Sharing (общий доступ) и нажимаем кнопку Share (общий доступ). Вот как эта опция выглядит в русской и английском интерфейсах:

Сетевая папка в Windows | Шаринг

После нажатия, необходимо выбрать группы пользователей, которым будет видна эта директория. Если нет особых требований к безопасности и это изолированный сетевой сегмент или лаборатория, то можно выбрать Everyone (все). После выбора нажимаем Share. Готово, вот что у нас получилось:

Шаринг папки в Windows

На скриншоте выше красным цветом отмечен 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

В меню далее выбираем ежедневное выполнение нашего скрипта:

Task Scheduler Daily задача

Ставим выполнение задачи на 00:00:00:

Время выполнения задачи

В Action выбираем Start a program:

Вид действия | Start a program

Далее, указываем путь до нашего скрипта, который создавали ранее - movefiles.bat:

Выполнение батника через планировщик в виндоуз

В финальном окне смотрим, что у нас получилось. Если все ОК, как у нас, то нажимаем Finish:

Задача в Task Scheduler создана успешно

Отлично. Переходим в свойства свежесозданной таски (задачи) и во вкладке General отмечаем Run whether user is logged on or not и чекбокс Run with highest privileges.

Run whether user is logged on or not

Далее, там же, в свойствах, переходим во вкладку Triggers, двойным нажатием открываем свойства уже созданного там триггера (Daily) и делаем вот что:

  • Отмечает чекбокс Repeat task every;
  • В поле, сразу после Repeat task every вписываем 1 mnute;
Repeat task every 1 minute

Нажимаем ОК.


Тестируем

Итак, давайте протестируем, что у нас получилось. На сервере А в папку Source кладем тестовый текстовый файл:

Автоматический перенос тестового файла batch

Проверяем на сервере Б в директории Destination:

Автоматический перенос тестового файла батником работает
Ссылка
скопирована
Системное администрирование
Скидка 10%
Администратор Linux
Стань Linux администратором и сделай весомый шаг в сторону карьеры в DevOps. Самые важные знания от сертифицированного и практикующего тренера с 20 летним стажем
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Виртуализация серверов – это разделение одного физического сервера на несколько виртуальных серверов, каждый из которых работает
img
На базе нашего опыта и статей мы сделалем еще один полезный документ: руководство администратора по Linux/Unix системам. В докум
img
Удаленный доступ к системам давно стал необходимостью, и сейчас с трудом можно представить, что было бы, если бы мы не могли упр
img
Все мы любим компьютеры. Они могут делать столько удивительных вещей. За пару десятилетий компьютеры произвели самую настоящую р
img
Архитектуры х64 и х86 являются одними из наиболее широко используемых типов архитектур системы команд (АСК или ISA – Instr
img
Gzip – один из самых популярных алгоритмов сжатия, который позволяет сократить размер файла, но при этом сохранить исходный файл
Комментарии
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59