SSHを介してバイナリファイルを検索するときに\ nの前に\ rが挿入されるのはなぜですか?これをバイパスする方法は何ですか?

SSHを介してバイナリファイルを検索するときに\ nの前に\ rが挿入されるのはなぜですか?これをバイパスする方法は何ですか?

Ubuntu 14.04本番サーバーを継承し、20.04にアップグレードする必要があり、サンドボックスのバージョンを試してみたいので、MacOSまたは他の14.04 virtualboxインスタンスからネットワーク経由でファイルシステムをdump接続しようとしています。restoreこの質問の以前のバージョンは次の場所にあります。https://askubuntu.com/q/1314747/963

サーバーは自分のコンピュータを「見る」ことができないため、簡単にダンプを実行し、結果を自分のコンピュータにリモートでプッシュすることはできませんが、ダンプを実行するには自分のコンピュータでsshを呼び出す必要があります。

ssh -t me@there "echo MYPASSWORD | sudo -S dump -y -f - /boot 2>/dev/null " > boot.dump 

\r問題は、このコマンドを実行すると、文字の前に多数の文字が挿入され、\nダンプファイルが破損してrestore使用できなくなることです。私はこれがおそらくドライバが改行を印刷に必要な文字に変換するためであることを知っていますが、これがどこで起こるのかわかりません。

正しいバイナリダンプファイルを取得するにはどうすればよいですか?

答え1

ONLCR .c_oflagこれは、リモートシステムに割り当てられた擬似端末\n(sshオプションのため)によって改行()がキャリッジリターン/改行()に変換されるようにするtermios設定です。\r\nssh-t

オフにするには、次のコマンドを使用しますstty -onlcr

ssh -t me@there 'stty -onlcr; ...' > output

答え2

公式のASCII行末は次のとおりです(つまり、CではCR LF行の先頭に戻って次の行に移動します)。\r\n各行を1バイトに減らすために(メモリがKiBで測定され、ディスクが数百MiBの場合は非常に重要です)、Unixは行の\n終わりのみを表示します。一部のシステム(特にMicrosoft)した標準に準拠しているため、システム間でテキストファイルを移動するときに、翻訳作業を行う必要がある場合があります。

関連情報