tgzフォルダを圧縮し、base64でエンコードしてすぐに転送します。

tgzフォルダを圧縮し、base64でエンコードしてすぐに転送します。

フォルダを圧縮してbase64でエンコードしてフライトに送信しようとするとエラーが発生します。

tar:空のアーカイブの作成を卑劣に拒否します。

tar -czf Pictures | base64 | nc remote_host 443  

nc -lvp 443 | base64 -d > secret.tgz # remote host

フォルダを圧縮して飛行機に正しく送信するにはどうすればよいですか?

答え1

このコマンドは、圧縮のためにtarに何も渡さないため、「空」のアーカイブエラーを発生させます。

使用する場合は、-f作成するアーカイブの名前と圧縮するアーカイブ(あなたのディレクトリ)を続けてください。

stdoutに転送してパイプするには、仮想オプション/ショートカット "-"を使用する必要があります。

良い:

tar -czf - Pictures | base64 | nc remote_host 443 

@muruが正しく指摘したように、tarはデフォルトでstdoutとして出力されるので、「-f」を削除すると他のオプションがあります。

tar -cz Pictures | base64 | nc remote_host 443

nc理論的には、バイナリファイルをコンソールに送信せずに問題なく処理できる必要があり、追加のBase64エンコーディングおよびデコードステップを実行する必要はありません。私はBase64を使わずに文字通り何千回もこれを行いました。

私はnc次のように-vなしでリモート側でスクリプトを書くことを好みます。

tar -czf - Pictures | nc remote_host 443  
nc -lp 443 > secret.tgz # remote host

関連情報