얼마 전에 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년에 저자는 세 가지 접근 방식을 제안했습니다.
- CD-ROM과 같은 읽기 전용 압축 아카이브를 보고 있으며 여기에 쓰기 위해 -7zip을 요청했습니다. 이를 수행할 수 없으므로 디스크 공간이 없는 것처럼 실패합니다.
- 디스크 공간이 부족한 드라이브에 압축을 풀려고 합니다.
- 대용량 파일을 지원하지 못하는 파일 시스템에 대용량 파일의 압축을 풀려고 하니 디스크 공간이 없는 것처럼 실패하게 됩니다.
내 문제는 새로운 플래시 드라이브가 내 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"을 새 폴더에 복사했습니다.