web-dev-qa-db-ja.com

pvを使用してopenssl暗号化/復号化の進行状況を表示するにはどうすればよいですか?

opensslを使用してファイルを暗号化および復号化できるようにする必要があります。現在、これは次の方法で簡単に実行できます。

openssl enc -aes-256-cbc -salt -in "$input_filename" -out "$output_filename"

および復号化:

openssl enc -aes-256-cbc -d -salt -in "$input_filename" -out "$output_filename"

しかし、ファイルが大きい場合は、進捗状況を確認したいと思います。

次のさまざまなバリエーションを試しました(復号化):

pv "$input_filename" | openssl enc -aes-256-cbc -d -salt | pv > "$output_filename"

しかし、これは私にパスワードを尋ねることに失敗します。どうすればいいのかわからない?

EDIT1:

私はこれをtarよりもopensslで見つけました。

https://stackoverflow.com/a/24704457/1997354

それは非常に役立つかもしれませんが、私はそれをあまり得ていません。

EDIT2:

名前付きパイプについて:

それはほとんど機能します。 点滅の進行状況を除いて、これは明らかに表示できず、最終結果は次のようになります。

enter aes-256-cbc decryption password:
1.25GiB 0:00:16 [75.9MiB/s] [==============================================================================================================================================================================================>] 100%            
1.25GiB 0:00:10 [ 126MiB/s] [                                             <=>                                                                                                                                                                ]
3

試してみてください

openssl enc -aes-256-cbc -d -salt -in "$input_filename" | pv -W >> "$output_filename"

から マニュアル

-W、-wait

進行状況情報を表示したり、ETAを計算したりする前に、最初のバイトが転送されるまで待ちます。パイピング先またはパイピング元のプログラムが開始前に追加情報を必要とする場合に役立ちます。たとえば、データを処理する前にパスフレーズを必要とするgpg(1)またはmcrypt(1)にデータをパイピングします。

それはまさにあなたの場合です。以下のコメントでWeijun Zhouによって明確に説明されている理由で、プログレスバーを表示する必要がある場合は、パイプ内のコマンドの順序を逆にすることができます。

pv -W "$input_filename" | openssl enc -aes-256-cbc -d -salt -out "$output_filename"
5
MariusMatutiae

名前付きパイプ ここが必要です。

$ mkfifo mypipe
$ pv < mypipe > "$output_filename"|(pv "$input_filename" | openssl enc -aes-256-cbc -d -salt -out mypipe)

2つのpvコマンドの出力は、ttyウィンドウの下部に交互に表示されます。しかし、それが本当に必要なものかどうかはわかりません。 pv "$input_filename"pvの出力のみが必要な場合は、それに応じて上記のコマンドを変更します。

編集

OPからより多くの情報を入手した後、私は今、

pv "$input_filename" | openssl enc -aes-256-cbc -d -salt -out "$output_filename"

oPの実際のニーズに対応するには十分です。

2
Weijun Zhou