Надежная передача файлов по медленной или нестабильной сетевой ссылке

8

Мне нужно передать несколько файлов по низкокачественной широкополосной связи на сервер. Файлы имеют большой размер, и для их передачи требуется около 30 минут.

Я использую scp, но иногда он зависает - передача не завершается с ошибкой, она продолжается, но дальнейшие данные не передаются.

Итак, я ищу «безопасное» решение для загрузки, которое будет работать, даже если ссылка не работает в течение нескольких минут или иным образом ненадежна.

Моя идея такова:

  1. разбить большой файл на маленькие части
  2. загрузить части с тайм-аутом и повторить в случае неудачи

Вопросов:

  • Есть ли готовый инструмент, который реализует эту идею? (никакой конкретной потребности в scp. не может быть ftp или что-то еще)
  • Есть ли способ определить, когда scp зависает? ((то есть он все еще работает, но не передает данные)
user1219721
источник

Ответы:

15

Вы можете использовать rsync для копирования вашего файла с одного компьютера на другой. rsync может использовать ssh в качестве основного транспорта. В сочетании rsync --partialсо сценарием, подобным этому, попробуйте еще раз в случае сбоя сети, и вы сможете перемещать свои файлы даже в случае сетевых ошибок.

Другой способ сделать это - смонтировать удаленную файловую систему на локальном компьютере sshfs -o reconnect, а затем просто скопировать файл (ы). sshfs / Linux позаботится обо всем остальном. Судя по некоторым тестам, которые я провел сегодня, это, кажется, намного медленнее, чем rsync.

Наконец, вы можете настроить VPN между двумя компьютерами. Это включает в себя большую часть работы, и любое из вышеперечисленных решений намного проще, но это решит проблему нестабильного сетевого соединения. И, как отмечают некоторые люди, это также может быть нестабильным. Он может работать, если VPN очень агрессивно настроен на восстановление соединений, как OpenVPN, но вышеприведенные решения намного лучше.

Майкл Хэмптон
источник
1
Чтобы это работало, вам нужно будет использовать --partialфлаг (или что-то, что подразумевает --partialподобное --inplace), в противном случае, когда передача будет прервана, частичная передача будет удалена, и вам придется начинать заново.
womble
Rsync определенно путь ... Или Robocopy для Windows.
Брайан Адкинс
Как именно VPN может помочь с нестабильным соединением?
EEAA
Программное обеспечение VPN (например, OpenVPN) может автоматически подключаться в фоновом режиме, прозрачно к любым приложениям, работающим через VPN.
Майкл Хэмптон
@ErikA Мои мысли точно - VPN через Flakey Link = Flakey VPN, который всегда должен быть перезапущен. Это только добавляет второй уровень к проблеме, которая заключается в том, что программное обеспечение транспорта должно быть в состоянии перезапустить передачу файлов именно там, где она была прервана.
Fiasco Labs