Если задаётесь иногда вопросом как быстро и безопасно передать файл(ы) по сети peer-to-peer - посмотрите на Magic Wormhole. А точнее на его альтернативные реализации - всё-таки оригинал написан на Python 🤷‍♂️

Например, для CLI это может быть wormhole-william на Go или wormhole.rs догадайтесь на чём.

Если нужен GUI, то это будет Rymdport или RiftShare. Оба есть в Flatpak. Второй недавно перешёл в состояние Read-Only. Первый жив и развивается - возможно, сейчас там уже нет тех мелких косячков, которые меня напрягали когда я тестировал его.

Есть версии и для смартфонов.

Естественно, они все используют один общий протокол и позволяют если нужно использовать свой релей.

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

#soft #log #P2P #files #sharing #wormhole #pic

Follow

@skobkin Самое забавное что он не P2P.

@L29Ah
О, так это мне 10-гигабитный интернет провели, получается, а я и не заметил!

@skobkin Ладно, видимо мне не везло, и он всегда находил путь только через TURN в моих кейсах.

@skobkin @L29Ah то есть, он не в локалке может на гигабитных скоростях передавать?

@vort3 @L29Ah
Вообще я тут шучу про то, что если он не P2P, а у меня передавалось гигабитами - видимо, мне домой провели сильно более крутой интернет.

Но технически-то что ему мешает передавать больше гигабита если у тебя есть такой канал?

Проблема в том, что у тебя этого канала нет 🤷‍♂️

Но, скажем, когда я между серверами переезжал, я дампы тяжёлые им перевозил и там оно передавалось с приятными скоростями.

@vort3 @L29Ah
Провёл ради тебя эксперимент передавая по 10G оптической сети даннее с одного SSD на другой SSD.

Получилось примерно два с лишним гигабита.
Не знаю, что стало узким местом: диск, протокол или конкретная реализация на Go.

iperf3 в это же время в 4 потока вполне выжал практически те самые 10 гигабит. Так что сеть я бы винить не стал.

@vort3 @L29Ah
Прогнал wormhole-rs (Rust) и получил схожий результат. Он не показывает скорость передачи, но по количеству переданных данных видно, что передаётся примерно ~300 мегабайт в секунду.

Из любопытства, а если передавать /dev/random в /dev/null, оно перестанет упираться в диски или продолжит упираться в сеть?)

@skobkin@lor.sh @vort3@mastodon.social @L29Ah@qoto.org

@foxido @vort3 @L29Ah

Я кинул из tmpfs в tmpfs в Go-шной версии - ничего не поменялось.
На растовой не пробовал.

Правда, я тут потестил чисто IO на десктопе и оно выглядит достаточно печально (как минимум в линуксах):

> dd if=/dev/urandom bs=10M count=1000 status=progress of=/dev/null
> 10485760000 bytes (10 GB, 9.8 GiB) copied, 19.6322 s, 534 MB/s

На сервере - ~617MB/s.

Короче говоря, нельзя исключать, что wormhole действительно упирается в IO.

P.S. Да, я гнал из /dev/urandom, а не /dev/random, т.к. второй может блокироваться если выжрать энтропию по идее.

про urandom и random

Я писал скорее как термин, а не точный файл) А ещё кстати с ядра 5.6 разницы между ними нет (не считая этапа загрузки), так что это уже не очень актуально

[1] —
https://www.phoronix.com/news/Linux-5.6-Random-Rework
@skobkin@lor.sh @vort3@mastodon.social @L29Ah@qoto.org

Ну и кстати ещё оффтоп, так как dd без сжатия, то я предпочитаю им перегонять из /dev/zero — вот там уж точно нулевой (ba dum tss) оверхед

@skobkin@lor.sh @vort3@mastodon.social @L29Ah@qoto.org

@foxido @skobkin @vort3 У dd здоровый оверхед т.к. там используется read(2) и write(2) вместо splice(2).

@pomstan @L29Ah
Знаю про такие штуки. Тут вот рядом как раз @coaxial написал про пару таких.

Меня штуки на WebTorrent и прочих WebRTC всегда в нужный момент подводили.

@drq не даст соврать если не забыл как мы записи подкаста шарили.

@coaxial @skobkin @L29Ah @drq дегенерат, ты зачем отвечаешь в фолловер-онли в публичном треде? народу не видно нихуя

Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.