1

Допустим, у меня есть общий каталог на сервере Windows, например: \\servername\location\common . В течение дня любой пользователь может прийти и добавить / удалить файлы в этот каталог Windows.

Как мне настроить ночное расписание (всегда 9 вечера) для передачи всех файлов в этом каталоге на сервер Unix по заранее заданному пути (который не изменяется)?

Я не слишком озабочен сокрытием паролей, так как все их знают.

  • Есть какой-нибудь известный скрипт для этого?
  • Если нет, есть ли у кого-нибудь советы о том, как я мог бы реализовать это?

У меня есть некоторые знания о .bat файлах и оболочке.

7 ответов7

3

Я бы использовал бесплатное программное обеспечение, такое как "AlwaySync", для отправки своих файлов по SFTP/SSH. Или я бы настроил общий ресурс ISCSI/SMB в удаленной системе и сделал бы резервную копию таким образом. Или я бы установил Cygwin и настроил rsync для резервного копирования на сервер Linux в cron.

Это просто концепции, чтобы ваши мозговые соки текли!

3

Это можно сделать с помощью задачи Windows и WinSCP.

Сначала перейдите и установите WinSCP http://winscp.net/rus/index.php. После установки нажмите "Создать", затем введите информацию для своего сервера. Если вы используете ключи, найдите файлы ключей, в противном случае введите пароль. Нажмите сохранить. В появившемся диалоговом окне обязательно отметьте "Сохранить пароль", если вы не используете ключевые файлы. Запомните имя профиля, которое вы выбрали.

Далее создайте файл config.txt в том же месте, где вы установили WinSCP, и вставьте в него следующее, заменив ** на специфические для вас вещи.

option batch on
option confirm off
open *NAME OF PROFILE* synchronize local -mirror *Local path: \\servername\location\common* *Remote Path*
exit

Нажмите клавишу Windows Key + R

Затем введите taskschd.msc /s нажмите «ОК». В правой части открывшегося окна выберите Create Task... Введите имя: Folder Auto Upload (или что вам подходит)

Перейдите на вкладку « Triggers », затем нажмите « New Выберите переключатель « Daily ». Будет указано время. Настройте время, когда вы хотите, чтобы загрузка происходила. Нажмите OK

Перейдите на вкладку « Actions », нажмите « New в поле «Программа / сценарий», введите местоположение WinSCP.exe (или перейдите к месту установки и выберите его) в поле «Добавить аргументы» (необязательно): введите «enter /console /script=config.txt затем нажмите OK нажмите OK раз, и у вас все будет готово.

2

Вы можете установить putty и использовать pscp с расписанием задач. Если безопасность не была приоритетом, вы можете сделать то же самое со встроенным FTP-клиентом в Windows.

В моем случае я использую putty и pscp из дистрибутива gow инструментов unix

Базовая передача файлов для всего каталога будет выглядеть примерно так:'pscp -pw password -r' path/to/source/"username@server.tld:/path/to/destination/'- есть некоторые проблемы с этим подходом например, пароль в текстовом виде

Использование pagent было бы лучшим подходом - вам придется настроить его и заменить -pw пароль на -agent, как я полагаю.

IIRC, если вы хотите использовать дельтакопию маршрута rsync, может быть хорошим вариантом, он выполняет запланированное добавочное резервное копирование

1

На мой взгляд, rsync - единственный путь - вы просите синхронизировать каталог в одной файловой системе с другой, и наиболее надежным средством для этого является rsync. Чтобы попытаться обосновать это дальше, я думаю, что было бы хорошо взглянуть на историю проекта rsync - он был создан в 1996 году, постоянно развивался и широко использовался в сообществе unix. Его последний выпуск был в 2008 году - это означает, что в течение последних 4 лет считается, что он выполняет почти идеальную работу по синхронизации двух каталогов. Так что вопрос в том, как это настроить.

Я подумал, что это, должно быть, довольно распространенная вещь, чтобы сделать это с помощью быстрого Google и обнаружил очень хороший пост о переполнении стека - скрипт резервного копирования bash для общих ресурсов samba с использованием rsync. Я уже имел в виду необходимые шаги (которые я опишу ниже), но сценарий выходит за рамки, создавая файлы журналов, несколько общих ресурсов, монтируя несмонтированные файловые системы и т.д .; это действительно отличный сценарий. Все, что вам нужно сделать, это изменить его, чтобы он содержал каталоги / IP-адреса для общего ресурса Windows и место назначения для файлов и журналов.

Осталось только запланировать запуск сценария в 9 вечера. Это можно сделать с помощью cron или crontab. Прочтите учебник cron или crontab, если вы не знаете, как это сделать.

1

Так как у вас есть вещи, доступные через SMB, я бы справился с этим со стороны Unix. Это означает, что я бы настроил задание cron (возможно, используя учетную запись пользователя без полномочий root), которое выполняет передачу, используя либо

  • rsnapshot - хорошая утилита для резервного копирования (с инструкциями по настройке cron)
  • rsync - если ваша проблема скорее в синхронизации файлов, чем в резервном копировании.
1

Если это текстовые / скриптовые файлы, я бы выбрал систему контроля версий, такую как SVN, GIT или Mercurial. Таким образом, сервер не будет слишком загружен (сохраняются только различия между файлами), и вы сможете легко проверить различия между каждой операцией синхронизации и даже узнать, кто / когда изменил какой файл и что было изменено. Вы также можете добавлять комментарии к каждой операции синхронизации, что, безусловно, очень полезно.

1

Вы можете поделиться папкой и файлом в Windows. Установите Samba в Linux, смонтируйте папку и запустите задание cron в Linux, чтобы передать файлы, где это необходимо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .