Это очень похоже на вопрос 326211 , но в этом случае ЛВС является нестабильным соединением Wi-Fi.
Мне нужно передать около 11 ГБ файлов между двумя компьютерами, оба работают под управлением Linux (хотя один из них может быть перезагружен в Windows.) Их соединение является медленным и нестабильным (из-за ужасной поддержки Wi-Fi в Linux), но сменным носителем (таким как флэш-накопитель или внешний жесткий диск) в настоящее время недоступен.
Прямо сейчас я медленно пересылаю файлы по одному через SFTP, но мне приходится переподключать каждый компьютер примерно каждые 90 секунд, и компьютеры находятся не очень близко друг к другу, поэтому это невозможно.
Это не дубликат Вопроса 30186; что конкретно касается Windows 7, и все предлагаемые решения включают программы с закрытым исходным кодом, предназначенные только для Windows (все они являются шпионскими программами IMHO, и все они не обсуждаются, даже если я им доверяю - один из компьютеров предназначен только для Linux).
источник
Ответы:
Как насчет использования чего-то вроде 7zip или winrar для создания разделенных архивов, скажем, по 50 МБ каждый. Таким образом, вы можете передавать файлы до тех пор, пока не разорвется соединение, но вам не нужно каждый раз начинать с нуля.
# -mx0 indicates no compression to be used (quickest method)
7z a -mx0 -v50m video.7z myVideo.mp4
После того, как все файлы переданы (используя
scp
или эквивалентные) просто рекомбинировать и извлечь? Вы, вероятно, также получите лучшую скорость передачи нескольких файлов одновременно.-
РЕДАКТИРОВАТЬ : Я знаю, что вы сказали, что съемных носителей не может быть и речи, но не могли бы вы удалить жесткий диск из компьютера 1 и просто подключить к компьютеру 2 для выполнения передачи?
источник
split
иcat
, и, возможно,tar
заранее, чтобы получить все файлы в один большой блок.split
команде ... похоже, это может быть дроид, которого я ищу ...Прежде всего, я попробую посмотреть, можно ли сделать соединение более стабильным. Помимо передачи файлов, я не думаю, что полезно работать с соединением, которое прерывается каждые 90 секунд.
Простой USB USB-ключ может творить чудеса (во-первых, выяснить, какое устройство на самом деле вызывает отключение: хост A, хост B или точка доступа?
Возможно, Linux не имеет ничего общего с потерей сигнала, но это скорее вопрос WiFi нестабильности таковому . Попробуйте заблокировать точку доступа на более низкой скорости. Даже мизерная скорость 11 Мбит / с, если она надежна, превзойдет слабое соединение со скоростью 54 Мбит / с. И очень часто карты будут пытаться увеличить скорость, даже если, учитывая ситуацию, они не смогут доставить .
Если вы застряли с соединением, которое прерывается и пересматривается каждые 90 секунд, лучше всего подойдет
rsync
или разбить файлы на достаточно маленькие кусочки для фильтрации между повторными переговорами:будет разделить этот файл на N куски (скажу) 10 МиБа каждый, называется
xaa
,xab
,xac
... После завершения копирования, вы можете собрать куски с другой стороны , используяcat
.Другая возможность может состоять в том, чтобы вообще отказаться от TCP и использовать протокол на основе UDP, например UDT или UFTP .
Наконец, вы можете установить простой веб-сервер на одном компьютере и использовать
wget
или любой HTTP-клиент, поддерживающий целостность поиска, диапазон байтов и автоматическую повторную попытку, чтобы загрузить весь набор файлов (что, если их еще нет, было бы лучше сжать).Это дольше для установки, но затем оно должно продолжаться автоматически и использует доступное и проверенное и проверенное программное обеспечение (apache, wget).
Приходите снова - ушли снова - Финнеган
Предполагая, что вам необходимо убедиться, что сценарии синхронизированы, или вы потратите много времени на соединение, вы, вероятно, можете поиграть с одним из них
iwconfig
илиifup/ifdown
заставить его работать так:или если вы хотите запустить его в виде скрипта (для запуска команд if * все равно потребуется root-доступ):
(Надеюсь) лучший способ
Проблема со сном 90 секунд заключается в том, что, если что-то действительно странно не работает в маршрутизаторе, время его работы не будет точно равным 90 секундам. Таким образом, мы тратим много времени на то, чтобы оставаться на ногах, когда оператор Wi-Fi не работает, или на спаде, когда оператор Wi-Fi мог оставаться на связи.
Итак, допустим, что маршрутизатор имеет IP 192.168.0.1, на обоих хостах Linux мы запускаем
Этот сценарий будет снимать три пакета в направлении маршрутизатора. Пакеты довольно малы и не сильно влияют на пропускную способность. Один отброшенный пакет может быть случайным, два совпадением - три отброшенных пакета запускают цикл питания WLAN. Надеемся, что это должно тратить не более двух секунд на цикл (вместо 90 секунд) и никогда не запускать цикл питания, если в этом нет необходимости.
Само собой разумеется, что функциональность PING должна быть проверена на маршрутизаторе - если маршрутизатор не отвечает на запросы ping или отбрасывает ICMP, когда находится под нагрузкой TCP / UDP (например, из-за приоритетов протокола), тогда вторая версия сценария может выполнить гораздо больше вреда, чем пользы.
Но теперь, когда я думаю об этом, вы пытались поиграться с
iwconfig
параметрами? Например порог чувствительности:источник
взято с https://patrick-nagel.net/blog/archives/434
Вы хотели бы поместить это в скрипт оболочки bash. что-то вроде следующего
вам нужно настроить ssh-ключи, это еще один вопрос, если вы не знаете, как это сделать, но это в основном:
это создаст вашу пару открытых / закрытых ключей. Скопируйте ваш открытый ключ на конечный компьютер, чтобы вам не приходилось использовать парольные учетные данные при каждом разрыве соединения.
источник
Многие другие ответы включают в себя разбиение файла на части и добавление проверки целостности - это довольно похоже на работу торрентов. Не могли бы вы использовать что-то вроде рторрента?
http://libtorrent.rakshasa.no/
источник
Bittorrent Sync работает через локальную сеть. Текущие требования (за руководство ):
источник