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

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

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

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

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

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

Вопросы:

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

1 ответ

Решение

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

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

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

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