パイプの最後のNバイトだけを維持しますか?

パイプの最後のNバイトだけを維持しますか?

ソケットからファイルにデータを転送しています。すべてのデータを保存する必要がある場合は、次のように簡単です。

$ nc -l 5001 > file.bin

最初のバイトだけを保存したい場合は、n次のようになります。十分簡単さらに:

$ nc -l 5001 | pv -Ss 2M > file.bin

新しいデータが到着したら、キューのようにファイル内の古いデータを置き換えることができるように、最大​​サイズのファイルにデータをパイプする方法はありますか?そのようなものがある場合は、固定サイズの名前付きパイプを使用することもできます。

理想的には、すべてのファイルを保存してから切り取る必要なく継続的に実行されます。つまり、tail単にファイル全体を保存して実行したくありません。

ベストアンサー1

n = 2Mの場合は、次を使用します。

nc -l 5001 | tail -c 2M > file.bin

または以下を使用してください。

nc -l 5001 | tail -c 2097152 > file.bin

おすすめ記事