10,000 개의 XML 파일이 있다고 가정합니다. 이제 친구에게 보내려고한다고 가정하십시오. 보내기 전에 압축하고 싶습니다.
방법 1 : 압축하지 마십시오
결과 :
Resulting Size: 62 MB
Percent of initial size: 100%
방법 2 : 모든 파일을 압축하여 10,000 xml 파일을 보냅니다.
명령:
for x in $(ls -1) ; do echo $x ; zip "$x.zip" $x ; done
결과 :
Resulting Size: 13 MB
Percent of initial size: 20%
방법 3 : 10,000 개의 xml 파일을 포함하는 단일 zip 만들기
명령:
zip all.zip $(ls -1)
결과 :
Resulting Size: 12 MB
Percent of initial size: 19%
방법 4 : 파일을 단일 파일로 연결하고 압축
명령:
cat *.xml > oneFile.txt ; zip oneFile.zip oneFile.txt
결과 :
Resulting Size: 2 MB
Percent of initial size: 3%
질문 :
- 단일 파일을 압축 할 때 왜 이렇게 뛰어난 결과를 얻습니까?
- 방법 2보다 방법 3을 사용하여 훨씬 더 나은 결과를 얻을 것으로 기대했지만 그렇지 않았습니다. 왜?
- 이 동작은 특정
zip
입니까? 사용하려고gzip
하면 다른 결과가 나옵니까?
추가 정보:
$ zip --version
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
Currently maintained by E. Gordon. Please send bug reports to
the authors using the web page at www.info-zip.org; see README for details.
Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip,
as of above date; see http://www.info-zip.org/ for other sites.
Compiled with gcc 4.4.4 20100525 (Red Hat 4.4.4-5) for Unix (Linux ELF) on Nov 11 2010.
Zip special compilation options:
USE_EF_UT_TIME (store Universal Time)
SYMLINK_SUPPORT (symbolic links supported)
LARGE_FILE_SUPPORT (can read and write large files on file system)
ZIP64_SUPPORT (use Zip64 to store large files in archives)
UNICODE_SUPPORT (store and read UTF-8 Unicode paths)
STORE_UNIX_UIDs_GIDs (store UID/GID sizes/values using new extra field)
UIDGID_NOT_16BIT (old Unix 16-bit UID/GID extra field not used)
[encryption, version 2.91 of 05 Jan 2007] (modified for Zip 3)
편집 : 메타 데이터
한 가지 대답은 차이점이 Zip에 저장된 시스템 메타 데이터라는 것입니다. 나는 이것이 사실 일 수 있다고 생각하지 않는다. 테스트하기 위해 다음을 수행했습니다.
for x in $(seq 10000) ; do touch $x ; done
zip allZip $(ls -1)
결과 zip은 1.4MB입니다. 이것은 아직 설명되지 않은 공간이 ~ 10MB라는 것을 의미합니다.
$(ls -1)
사용 *
하십시오 for x in *
. zip all.zip *
.tar.gz
이 전체 디렉토리를 압축하는 것과 반대로 만드는 것은이 페 노모 나입니다 .