私のOSはUbuntu 20.04.2 ltsです。
私は、ファイルとサブフォルダを含むディレクトリnoup1からtarアーカイブを作成しています。tar cf no1.tar noup1
で暗号化しますgpg -c no1.tar
。これでno1.tar.gpg
アーカイブができました。
で復号化しようとするとgpg -d no1.tar.gpg
、ターミナルに波線がたくさん表示され、機能しません。
gpg no1.tar.gpg
フラグなしでだけを使用すると-d
、「コマンドが指定されていません。推測しようとしています...」という出力が表示されます。
gpg: WARNING: Kein Kommando angegeben. Versuche zu raten was gemeint ist ...
gpg: AES256 verschlüsselte Daten
gpg: Verschlüsselt mit einer Passphrase
アーカイブは暗号化されなくなりました。これでうまくいきました!しかし、どのようにして、そしてなぜ?
一方、-d
フラグを使用して結果を tar にパイプすると成功します。
gpg -d no1.tar.gpg | tar xf -
tar と gpg を使用して圧縮暗号化アーカイブを作成する方法
そこで私は疑問に思うのです:
「推測されたコマンド「それは実行されましたか?」
関連するすべてのチュートリアルで、ではなく-d
を使用して tar アーカイブを復号化するように指示されているにもかかわらず、 フラグは機能せず、 tar にパイプすると機能するのはなぜですか?gpg -d <archive-name>
gpg <archive-name>
いくつかのパッケージが不足しているか、gpg 設定に問題がある可能性はありますか?
答え1
に従ってマニュアルページgpgの場合、
-d
コマンドラインで指定されたファイル (ファイルが指定されていない場合は STDIN) を復号化し、STDOUT (または --output で指定されたファイル) に書き込みます。復号化されたファイルが署名されている場合は、署名も検証されます。このコマンドは、ファイルに含まれるファイル名に書き込むことはなく、暗号化されたメッセージで始まっていないファイルを拒否するため、デフォルトの操作とは異なります。
つまり、-d は正常に動作していましたが、ファイルを STDOUT に復号化していたため、大量のジャンク出力が表示されました。これは .tar ファイルのエンコードされたデータなので、意味不明な出力になるのは当然です。
シェルの出力ストリームではなくファイルに復号化したい場合は、--output <filename>
出力をファイルに使用するか、ファイルにリダイレクトします。
私は(ドイツ語が読めませんが)ファイルに対してコマンドを実行したとき、次のようなコマンドを実行したと思います。
gpg -d no1.tar.gpg --output no1.tar