さて、奇妙に聞こえるかもしれませんが、我慢してください。cp
ブロックデバイスの内容をコピーし、パイプを介してすぐにgzip
圧縮したいと思います。これを作成するために使用できますかcp
?できることを知っていますが、dd
最初からこのようなパイプラインを作成することが可能かどうかを知りたかったですcp
。
答え1
通常の状況では、標準出力が記録されないcp
ため使用できませんが、次のものを使用できます。cp
cat
cat device-file | gzip -c >some-output-file
この場合、権限のないユーザーのシェルセッションからデバイスにアクセスするには、プレフィックスまたは同様のコマンドが必要になる可能性がcat
あるため、これを使用することをお勧めします。sudo
ルートシェルにいる場合(理由が何であれ、ほとんど絶対的ではありません)
gzip -c <device-file >some-output-file
動作します。
答え2
名前付きパイプを作成し、ここにデバイスをコピーできます。
mkfifo /tmp/mypipe
cp device-file /tmp/mypipe
次に、gzipを並列に開始する別のシェルを開き、パイプからデータを読み取り、出力ファイルに書き込みます。
gzip </tmp/mypipe >outfile.gz
完了したら、名前付きパイプを削除できます。
rm /tmp/mypipe