Запланированная передача файлов между серверами
Я заинтересован в планировании копирования и отправки больших файлов через Интернет с одного сервера на другой. Серверы не находятся в одной сети.
Я не знаю обо всех доступных вариантах решения этой проблемы, но я смутно знаком с парой протоколов / спецификаций, которые могут быть полезны для этой задачи: (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-сервера.