AIX で暗号化されたファイルの生成中に、次のエラーが発生します。
$ openssl enc -aes-256-cbc -salt -in test.img -out test.img.enc
test.img: Value too large to be stored in data type
14221428:error:0200107F:system library:fopen:Value too large to be stored in:bss_file.c:356:fopen('test.img','r')
14221428:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:358:
test.imgファイルサイズは35GBです。
Linuxの100GBファイルでも同じコマンドが動作します。
答え1
エラーによると、あなたのコピーはopenssl
大容量のファイルサポートにコンパイルまたはリンクされていません。fopen
おそらく、ファイルを開いた後にファイルサイズを取得しようとすると失敗するため、失敗します。
さて、秘密はopenssl
パイプからデータを読み込み、パイプに書き込むことです。パイプには寸法がないので、fopen
それを知っていれば大丈夫でしょう。パイプのもう一方の端にあるものは複雑な作業をする必要はなく、openssl
実際のファイル間のパススルーフィルタだけが必要です。これがcat
まさに仕事のすべてです。cat
これは大容量ファイルに直接公開される機能になり、大容量ファイルのサポートが必要ですが、オペレーティングシステムが提供する基本ユーティリティではサポートしているとします。
cat test.img | openssl enc -aes-256-cbc -salt | cat >test.img.enc