큰 zip 파일이 있고 여기에 파일을 추가하면 Windows에서 파일의 복사본을 만든 다음 원본을 삭제하여 매우 큰 "쓰기 증폭"이 발생합니까, 아니면 파일에 추가됩니까?
(아마도 SSD인지 HDD인지가 중요할까요?)
답변1
비록 Zip 파일 형식 전체 아카이브를 다시 복사하지 않고 빠른 추가를 허용하도록 정의되었지만 이를 수행하는 Zip/7Zip 프로그램은 없습니다.
Zip 아카이브에는 포함된 모든 항목에 직접 액세스할 수 있는 내부 디렉터리가 포함되어 있습니다. 디렉토리는 아카이브의 마지막 부분에 저장되며 디렉토리를 포함한 모든 항목은 헤더로 식별됩니다.
원칙적으로 아카이브에 새 항목을 추가하는 방법은 해당 항목을 아카이브 파일에 추가한 다음 새 디렉터리를 추가하는 방식으로 수행할 수 있습니다. 그러나 새 디렉토리가 완전히 기록되어 디스크에 플러시되기 전에 컴퓨터 오류가 발생하면 아카이브의 끝에 쓰레기가 남을 수 있습니다.
이론적으로는 마지막으로 작성된 디렉터리의 헤더를 아카이브 끝에서 검색하여 복구할 수 있지만, 파일 끝에서 디렉터리를 찾을 것으로 예상하는 프로그램은 실패하고 손상된 아카이브를 알립니다.
저는 작업 전후에 아카이브의 디스크 주소를 쿼리하면서 두 개의 Zip 제품과 7Zip에 대한 아카이브에 파일을 추가하는 것을 테스트했습니다. 나는 그것을 위해 사용했다
fsutil file queryextents
명령.
세 가지 제품 중 어느 것도 추가 작업을 최적화하려고 시도하지 않았습니다. 세 가지 모두 새 항목을 추가할 때 전체 아카이브를 다시 복사했습니다.
내 결론은 그러한 최적화 제품이 존재할 수 있지만 귀하의 제품이 그러한 제품인지 테스트하는 것이 가장 좋다는 것입니다. 테스트하지 않으면 기본 가정은 아카이브가 다시 복사된다는 것입니다.