7zip의 E_FAIL 오류

7zip의 E_FAIL 오류

얼마 전에 7zip을 사용하여 백업을 만들었고, 여기서 파일을 14개의 2GB(대략) 파일로 분할했습니다. 저는 우분투 서버 15.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 등의 여러 디렉토리에서 추출을 시도했습니다.

답변1

3.5GB ISO 파일을 8GB USB 플래시 드라이브에 복사하고 있습니다.

진단

내 경우에는 @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(파일이 너무 큼), 일부 파일 닫기, 일부 인터럽트 및 종료 신호. 마지막으로 이전 오류 메시지를 보았습니다.오류: E_FAIL. 문제가 되는 파일 크기는 4.3GB입니다.

또한, 저에게 물어보신다면, 터미널로 보내는 최종 메시지는 항상 내부 메시지를 반영해야 합니다. 내부에OP의 페이스트빈, 바라보다

 write(1, "Error: E_FAIL                \n", 30Error: E_FAIL  ) = 30

일관된 메시지입니다. 내 경우에는 터미널의 "Error: E_FAIL"(대문자 오류 포함)이 호출 및 신호 추적에서 "EFBIG(File Too Big)"를 숨기고 있었습니다.

기본적으로 액면 그대로 받아들이지 말고 추적에서 더 많은 것을 찾으십시오.또한 대소문자와 Error: E_FAIL 또는 Error: E_FAIL**이 표시되는지 여부도 기록해 두세요.

행동

난 다른 걸 찾았어블로그 게시물2014년에 저자는 세 가지 접근 방식을 제안했습니다.

  1. CD-ROM과 같은 읽기 전용 압축 아카이브를 보고 있으며 여기에 쓰기 위해 -7zip을 요청했습니다. 이를 수행할 수 없으므로 디스크 공간이 없는 것처럼 실패합니다.
  2. 디스크 공간이 부족한 드라이브에 압축을 풀려고 합니다.
  3. 대용량 파일을 지원하지 못하는 파일 시스템에 대용량 파일의 압축을 풀려고 하니 디스크 공간이 없는 것처럼 실패하게 됩니다.

내 문제는 새로운 플래시 드라이브가 내 Linux 시스템에 나타나는 exFAT 또는 FAT32로 포맷된다는 것입니다. 따라서 대용량 파일(>25GB)은 4GB를 초과하여 쓸 수 없으며 이는 FAT32의 제한 사항입니다.

기본적으로 디스크의 남은 공간에는 문제가 없습니다. 파일 시스템이 작성하려는 파일 크기를 지원할 수 있는지 확인하십시오.

결과

이 솔루션은 저에게 효과적입니다. USB 드라이브를 FAT32에서 NFTS로 다시 포맷했고 추출이 완료되었습니다. 추출 후 사용된 총 공간은 5.3GB입니다.

Everything is Ok

Folders: 85
Files: 942
Size:       5437451876
Compressed: 5443010560
) = 3646
exit_group(0)                           = ?
+++ exited with 0 +++

답변2

방금 비슷한 오류가 발생했습니다. 문제는 "file.7z.002"가 없다는 것입니다. 방금 실수로 "file.7z.001"을 새 폴더에 복사했습니다.

관련 정보