少し前に7Zipを使用してバックアップを実行しました。このバックアップでは、ファイルを14個の2GB(約)ファイルに分割しました。 Ubuntu Server15.10を実行しています。
これは私がそれらを抽出するために実行しようとしているものです:
7z x Backup.7z.001
私も試した場合に備えて(「x」と「e」の違いはわかりませんが):
7z e Backup.7z.001
そして、これは私が得るものです:
7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
p7Zip Version 9.20 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)
Processing archive: Backup.7z.001
Error: E_FAIL
調査を行っていますが、「E_FAIL」エラーは「ディスク容量不足」を意味しているようです。ただし、ディスク容量は十分にあります。これは、「df-h」を実行したときに得られるものです。
Filesystem Size Used Avail Use% Mounted on
udev 791M 0 791M 0% /dev
tmpfs 161M 5,6M 156M 4% /run
/dev/sda2 450G 73G 354G 18% /
tmpfs 805M 4,0K 805M 1% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 805M 0 805M 0% /sys/fs/cgroup
tmpfs 161M 0 161M 0% /run/user/1000
/home/cristian/.Private 450G 73G 354G 18% /home/cristian
/ home/cristian、/ srv/samba/photosなどの多くのディレクトリで抽出してみました
同様のエラーが発生しました。問題は、「file.7z.002」が欠落していたことでした。誤って「file.7z.001」を新しいフォルダにコピーしただけです。
3.5 GBISOファイルを8GBUSBフラッシュドライブにコピーしていました。
私の場合、@ kwubbufetowiczに出向し、straceを使用してシステムコールとシグナルを確認しました。man strace
を参照してください。
strace 7z x [source] -o[target] 2>&1 | tee 7z-strace.log
最後の40行ほどの中に、次のシーケンスがあります。
open("[path to offending file]", O_WRONLY|O_CREAT, 0664) = 4
[...]
write(4, "[...])..."[...], 131072) = 131071
munmap(0x7f1c9e0b3000, 135168) = 0
write(4, "\354", 1) = -1 EFBIG (File too large)
close(3) = 0
close(4) = 0
brk(0x22be000) = 0x22be000
munmap(0x7f1c9c864000, 3837216) = 0
rt_sigaction(SIGINT, {SIG_DFL, [INT], [...]
rt_sigaction(SIGTERM, {SIG_DFL, [TERM], [...]
write(1, "xtracting [some file]/"..., 1108xtracting [some file]
[...]
ERROR: E_FAIL
) = 1108
exit_group(2) = ?
+++ exited with 2 +++
したがって、ファイル4にパス書き込みがあり、同じファイルにメッセージEFBIG(ファイルが大きすぎます)で失敗し、一部のファイルが閉じられ、いくつかの中断および終了信号。最終的に、以前に表示されたエラーメッセージ:ERROR:E_FAIL。問題のあるファイルは4.3GBです。
また、私に言わせれば、端末に送信される最終メッセージは常に内部メッセージを反映している必要があります。 OPのPastebin には、次のように表示されます。
write(1, "Error: E_FAIL \n", 30Error: E_FAIL ) = 30
これは一貫したメッセージです。私の場合、「ERROR:E_FAIL」は大文字のエラーで、端末で「EFBIG(ファイルが大きすぎます)」を呼び出し信号トレースで非表示にします。
基本的に、stdoutを額面どおりに取得して、トレースでさらに検索しないでください。大文字と小文字、およびエラーが発生するかどうかにも注意してください。 :E_FAILまたはエラー:E_FAIL **。
私はこれを見つけました ブログ投稿 2014年の著者は3つの方法を提案しています:
- CD-ROMのように読み取り専用の圧縮アーカイブを探していて、-7Zipに書き込みを依頼しました。これを行うことはできないので、ディスク容量がないかのように失敗します。
- ディスク容量が不足しているドライブに解凍しようとしています。
- 大きなファイルを、その大きなファイルをサポートできないファイルシステムに解凍しようとしているため、ディスク領域がないかのように失敗します。
私の問題は、新しいフラッシュドライブがLinuxボックスに表示されたときにexFATまたはFAT32にフォーマットされていたことでした。したがって、大きなファイル(> 25GB)は、FAT32の制限である4GBを超えて書き込むことができませんでした。
基本的に、ディスクの空き容量は問題ではありません。ファイルシステムが書き込みたいファイルサイズをサポートできるかどうかを確認してください。
この解決策は私のために働いた。 USBドライブをFAT32からNFTSに再フォーマットし、抽出を完了することができました。抽出後の合計使用容量は5.3GBです。
Everything is Ok
Folders: 85
Files: 942
Size: 5437451876
Compressed: 5443010560
) = 3646
exit_group(0) = ?
+++ exited with 0 +++