Кто-нибудь еще использует или знаком с командами rz и sz?

Причина оказалась в том, что среда, в которой я собирал файл initramfs. не был установлен busybox. Обновление -initramfs по умолчанию использовало klibc, у которого не было многих функций, включая автоматическое монтирование цикла.

2
18.02.2021, 14:31
1 ответ

How does rz and sz works internally?

Они просто используют терминальное соединение для общения друг с другом и отправляют файл по нему, используя определенный протокол. Это включает в себя некоторую синхронизацию (, так как программа szне просто выгружает данные в тот момент, когда вы ее запускаете ), обработка метаданных (, например. имя файла )и обнаружение ошибок и повторная отправка при необходимости. Кроме того, они, кажется, выполняют некоторую настройку терминала, вероятно, для предотвращения интерпретации любых возможных управляющих символов таким образом, который может помешать передаче.

Я не знаю точных деталей протокола, но есть несколько ссылок на странице ZMODEM в Википедии , если вам интересно.

Возможно, некоторые из действий, которые они делают, не нужны при подключении по SSH. Например. с TCP/IP и Ethernet на более низких уровнях имеются коды обнаружения ошибок, а TCP обрабатывает повторную отправку, а также любые аутентифицированные наборы шифрования на уровне SSH должны, по крайней мере, обнаруживать ошибки передачи (, поскольку они будут отображаться как злонамеренные изменения пакеты ).

Вы можете отправить файл по SSH-соединению с помощью

cat somefile.txt | ssh me@somewhere 'cat > somefile.txt'

Это просто сбрасывает данные через SSH-соединение, которое работает нормально, так как SSH является 8-битным -битом, и при таком использовании он не устанавливает терминал на удаленном конце, поэтому элементы управления терминалом не проблема.

Конечно, если вам нужно вручную запустить клиент SSH на промежуточном узле перехода, например

myworkstation$ ssh me@jumphost
jumphost$ ssh me@destination

Тогда немного сложнее настроить конвейер, вам придется сделать что-то вроде

myworkstation$ cat somefile.txt | ssh me@jumphost 'ssh me@destination "cat > somefile.txt"'

и я не уверен, что эта вложенная командная строка работает с SSH. Так что в этом смысле, если оба конца могут использовать ZMODEM, это кажется несколько полезной альтернативой, поскольку она, по крайней мере, предназначена для использования в середине сеанса терминала.

Опять же, SSH имеет функцию ProxyCommand, которая упрощает использование узлов перехода,и может упростить использование только scpили sftp. См., например.https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts

Are rz and sz reliable? Does anyone still use that? Is there a better solution for my need?

I feel pretty scared when I am using something old and unpopular like this. I don't know where things could go wrong. I always do a sha256sum after I upload or download files, this is driving me crazy.

Ну, они использовались с незапамятных времен, а файлы по-прежнему (в основном )всего 8 бит -на -байтовых дампов данных, так что нет причин, по которым они не должны по-прежнему работать. Хотя они немного архаичны, но в этом нет ничего плохого. Конечно, производительность — это еще один вопрос, и если вы обнаружите ошибку, вы можете подготовиться к тому, что вам будет трудно найти активного сопровождающего для ее исправления.

Несмотря на то, что обычно это не требуется, я не уверен, что ручная проверка передачи данных — это так уж плохо, если вы цените свои данные и хотите быть уверенными. Если вы передаете что-то по HTTP, вы все равно можете получить урезанную передачу, например. и wget http://..., и curl -o http://...кажутся счастливыми, чтобы оставить неполный файл, если они будут прерваны... (То же самое относится и к cat | ssh cat, представленному выше, заметьте.)

А что лучше для ваших нужд, вам придется решать самостоятельно.

3
18.03.2021, 22:29

Теги

Похожие вопросы