Запланированная передача файлов между серверами

Я заинтересован в планировании копирования и отправки больших файлов через Интернет с одного сервера на другой. Серверы не находятся в одной сети.

Я не знаю обо всех доступных вариантах решения этой проблемы, но я смутно знаком с парой протоколов / спецификаций, которые могут быть полезны для этой задачи: (1) FTP и (2) bittorrent.

Ранее я использовал Filezilla для ручной отправки больших файлов между группами серверов. В этом конкретном FTP-приложении нет возможности планирования, поэтому его недостаточно для удовлетворения моих требований к планированию. В идеале я хотел бы выполнить эту задачу, используя что-то более программируемое (не на основе графического интерфейса пользователя), а не проприетарное (например, платное приложение).

Я уже использую скрипты Python, которые запускаются по расписанию и выполняют другие операции на группе серверов. Серверы работают под управлением Windows, а сценарии автоматизированы с помощью планировщика задач Windows. Если бы я мог отправлять файлы через FTP с использованием Python, это было бы идеально для меня, особенно потому, что я мог бы просто перебросить код FTP в то, что у меня уже получилось и запланировано. Тем не менее, я кратко попытался поиграть с "ftplib" в Python и не смог сделать из этого ни головы, ни хвоста. Поэтому, прежде чем я попытаюсь пойти по этому пути, я сначала хотел опубликовать здесь.

Я не уверен, стоит ли мне использовать подход, основанный на FTP, поэтому я хотел бы получить некоторые рекомендации по этому вопросу. Кроме того, мне все равно, какой язык программирования я использую для этой задачи, хотя я бы немного предпочел Python, поскольку это кажется естественным выбором, поскольку я имею дело со сценариями на стороне сервера. Я тоже хотел бы получить рекомендации по этому вопросу.

Поскольку это мой первый пост, посвященный ошибкам сервера, вы, вероятно, можете себе представить, что я в большинстве своем не разбираюсь во многих из упомянутых выше тем. Заранее спасибо.

3 ответа

Решение

Я хотел бы начать с того, что вы хотели бы избежать FTP и Bit Torrent. Bit Torrent - это отличная технология, когда у многих людей есть файл, который вам нужен, и загрузка может быть распределена между всеми ними (например, быстрая загрузка ISO Linux). Я не рекомендовал бы это для простого переноса сайта A на сайт B.

FTP в основном считается устаревшим, потому что он небезопасен. Вся информация передается в виде простого текста и легко перехватывается злоумышленниками, которые могут прослушивать ваш трафик. Вы хотите завершить эту передачу по безопасному каналу.

Для этого у вас есть несколько вариантов шифрования передачи.

  • SSH туннели (scp / sftp)
  • VPN

Я бы порекомендовал следующее

  • Загрузите и установите WinSCP на обоих узлах
  • Просмотрите документацию по сценариям и напишите сценарий для безопасного копирования файлов из точки А в точку Б. Вы заметите, что этот сценарий также можно легко запланировать с помощью планировщика Windows.

Это, наверное, самый простой способ, который я мог бы рекомендовать. Другой вариант - установить VPN с удаленным компьютером и просто написать однострочный сценарий, который будет копировать файл с локального сервера на удаленный сервер.

Добро пожаловать в SF.

Просто используйте любой сценарий Windows FTP (или лучше FTPS или SFTP) клиент.

Например, как уже принято в принятом ответе, WinSCP поддерживает как сценарии, так и FTP/FTPS/SFTP.

См. Автоматизацию передачи файлов на FTP-сервер.

Простой пакетный файл для загрузки файлов с WinSCP выглядит следующим образом:

winscp.com /log=c:\path\ftp.log /command ^
    "open ftp://user:password@example.com/" ^
    "put c:\local\path\* /remote/path/" ^
    "exit"

Вы можете иметь пакетный файл, сгенерированный WinSCP GUI для вас.


Для планирования просто используйте планировщик Windows.
Для получения дополнительной информации см. Планирование передачи файлов на FTP-сервер.

(Я автор WinSCP)

Для решения на основе Windows я рекомендую заглянуть в TeraCopy ( http://codesector.com/teracopy/). Он работает значительно быстрее, чем копия Windows, поддерживает паузу / возобновление и повторяет попытку, если соединение разрывается.

Доступны параметры командной строки, поэтому вы можете записать сценарии передачи в пакетный файл или Powershell, а затем составить расписание с помощью планировщика заданий Windows.

Я тоже не рекомендую FTP. Он не дружествен к брандмауэру, поэтому для возобновления загрузки может потребоваться специальная настройка на стороне FTP-сервера.

Другие вопросы по тегам