Передача файлов через Ethernet-кабель: просто, быстро и без сети

Transfer files over an Ethernet patch cable

Блогер Maurycy показывает, как соединить два компьютера напрямую Ethernet-кабелем и передавать файлы на скорости около 900 Мбит/с (6,7 ГБ/мин) без роутера и интернета. Он сравнивает этот метод с облаком, Wi-Fi и USB-накопителями, отмечая, что Ethernet — единственный распространённый интерфейс, который стабильно достигает гигабитных скоростей с дешёвыми кабелями. Также упоминается недавняя поддержка передачи данных между Linux-устройствами через USB-C.

Я думаю, Ethernet недооценён для не-интернет-приложений и даже не требует локальной сети: соединение точка-точка вполне подходит.
  1. rmunn

    Раньше для этого требовался кроссовер-кабель; я именно так и делал (с кроссовер-кабелем) ещё до того, как https://en.wikipedia.org/wiki/Medium-dependent_interface#Aut... стал повсеместным. С прямым кабелем вы бы соединили контакт передачи (TX) одного адаптера с контактом TX другого, а контакт приёма (RX) одного с контактом RX другого — и ни одно устройство не "услышало" бы сообщения, которые отправляет другое. Кроссовер-кабель переставлял эти провода, так что контакт TX каждого устройства подключался к контакту RX на другом конце, и оба устройства могли "слышать" друг друга.

    Но с авто MDI-X каждое устройство замечало: "Эй, я отправляю, но ничего не получаю", и пыталось переключить свои функции передачи и приёма (передавать на контакте RX и принимать на контакте TX). Поскольку каждое устройство ждало случайный период времени перед этим, было очень маловероятно (почти невозможно), что они оба переключатся в один и тот же момент. А если бы и переключились, то второй интервал, скорее всего, тоже не был бы одинаковым.

    Я немного упрощаю в объяснении выше, но это в общих чертах. И именно так мои тщательно подписанные кроссовер-кабели начали покрываться пылью. (А потом я понял: "Эй, подождите, теперь я могу просто использовать их как обычные кабели", и достал их обратно из хранилища и смешал с обычными патч-кордами).

  2. steve1977

    Люди открывают для себя, что сетевые кабели можно использовать для соединения устройств в сеть. И называют это "трюком" (удивлён, что не "хаком").

  3. yjftsjthsd-h

    Я на 95% уверен, что на самом деле не нужно назначать IP-адреса. Сделайте так:

    # пинг всех link-local устройств на интерфейсе:

    ping ff02::1%eth0

    А затем выполняйте свой socat/rsync/что угодно на единственный IP, который ответит.

  4. yitchelle

    Это напоминает мне старые добрые времена 8-битных компьютеров, когда я использовал кроссоверный RS-232 кабель для передачи файла с одного компьютера на другой. Даже на скорости 30 бит/с это было гораздо надёжнее, чем записывать данные на кассету на одном компьютере, а затем читать их на другом.

  5. sgt

    На macOS ещё проще.

    Что-то вроде этого должно работать:

    ifconfig enX inet6 fd42:dead:beef::1 prefixlen 48

    Нет необходимости поднимать интерфейс, так как он уже должен быть поднят. enX должен быть вашим USB/Thunderbolt Ethernet адаптером, например, en6.

    Затем вы можете передавать файлы с помощью socat на другую машину, даже если это Linux-машина. Я обычно использую nc, но socat определённо будет быстрее.

    Почему сеть deadbeef, спросите вы? Это приватное пространство, так что не будет конфликтов с публичными адресами.

    Тем не менее, в 99% случаев с большими файлами я просто использую AirDrop!

  6. 3r7j6qzi9jvnve

    tbstream выглядит забавно, но его сложно использовать обычному пользователю — не уверен, станет ли он проще, но я не думаю, что запомню, как возиться с configfs только для передачи файла:

    https://git.kernel.org/pub/scm/linux/kernel/git/westeri/thun...

  7. SillyUsername

    Вы также можете пропустить данные через zstd на лету: для хорошо сжимаемых данных вы часто увидите увеличение пропускной способности в 1,5–3 раза, так что гигабитное соединение может эффективно передавать 165–330 МБ/с.

    Приёмник:

    socat -u TCP6-LISTEN:1234,reuseaddr STDOUT | zstd -d -c | tar -xpf - -C /destination

    Отправитель:

    tar -C /source -cf - directory | zstd -T0 -6 -c | socat -u STDIN 'TCP6:[fd42:dead:beef::2]:1234'

    -T0 использует все ядра. Поднимите уровень выше -6 для большего сжатия, снизьте для большей скорости, но если ваш процессор не справляется, высокие уровни на самом деле замедлят передачу. Уже сжатые данные не получат большой выгоды.

  8. awruko

    Мне однажды буквально пришлось скрестить кабель. Это была какая-то демонстрация, и кроссовер-кабель отсутствовал. В местных компьютерных магазинах его не было, и под давлением времени... я использовал карманный нож и переделал кабель. Это было до 2000 года, так что скорость была ограничена 10/100 Мбит/с — ifconfig не сообщал об ошибках, и демонстрация прошла гладко.

Ещё за этот день

2026-08-31