web-dev-qa-db-ja.com

作成中のtarファイルから作成中の7Zipアーカイブのチェックサムを作成する

私は問題を解決したいと思っています(これは質問の一部であるとは思わないので、 ここ について読むことができます)。

だからこれは私が思いついたものです:

$ tar -cO Templates | 7z a -si -mx=3 -p /t/out.tar.7z

コンピューターのTemplatesフォルダーを使用しているので、最初に非常に少量のデータでテストできます。

そして、それは期待どおりに機能します。

ただし、チェックサムを作成したい場合、失敗します。

$ tar -cO Templates | 7z a -si -so -mx=3 -p | tee /t/out.tar.7z | sha256sum

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7Zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)


Error:
Incorrect command line
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  -

コードの最初のブロックにあるものを実行すると、7Zipアーカイブ内のtarボールがout.tarと呼ばれることに気付きました。実際、それが.tar.7zで終わる理由です。したがって、tarボールの名前は.tarで終わります。

したがって、特にマニュアルページの7zコマンドの概要全体が次のようになっているため、ファイル名を含める必要があります。

7z [adeltux] [-] [SWITCH] <ARCHIVE_NAME> <ARGUMENTS>...

残念ながら、これも機能しません。

$ tar -cO Templates | 7z a -si -so -mx=3 -p out.tar.7z | tee /t/out.tar.7z | sha256sum

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7Zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)
Creating archive stdout


Enter password (will not be echoed) :
Verify password (will not be echoed) :


System error:
E_NOTIMPL                
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  -

アーカイブの種類を明示的に指定しても機能しません。

$ tar -cO Templates | 7z a -si -so -mx=3 -p -t7z | tee /t/out.tar.7z | sha256sum

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7Zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)


Error:
Incorrect command line
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  -

$ tar -cO Templates | 7z a -si -so -mx=3 -p -t7z out.tar.7z | tee /t/out.tar.7z | sha256sum

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7Zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)
Creating archive stdout


Enter password (will not be echoed) :
Verify password (will not be echoed) :


System error:
E_NOTIMPL                
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  -

どうすればこれを解決できますか?データを宛先に書き込んでから、そのファイルをハッシュすることはできません。データを暗号化する必要があります。

1
UTF-8

問題は、7Zipファイル形式が利用可能であることを求める必要があるため、7zファイル形式を-soとともに使用できないことです(プロジェクトページの this コメントごと)。 xzなどの別の形式を使用すると機能するようです。

$ tar -cO Templates | 7z a -an -txz -si -so | tee tarball.xz | sha256sum ; sha256sum tarball.xz

7-Zip 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7Zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)
Creating archive stdout


Everything is Ok
4349a01e62a7d7b6cfd46caa90ee38904227fc09ef643d87eb8209bc53cb8e50  -
4349a01e62a7d7b6cfd46caa90ee38904227fc09ef643d87eb8209bc53cb8e50  tarball.xz

ただし、これが機能する形式(gzipbzip2、およびxz)のアーカイブにパスワードを設定することはできません。

1
DopeGhoti