압축 파일을 저장하지 않고 디렉터리가 달성할 수 있는 압축 수준을 추정하는 가장 좋은 방법은 무엇입니까?
다양한 성격의 파일(바이너리 파일, 텍스트 파일, 압축 파일 등)이 포함된 수많은 디렉터리와 하위 디렉터리가 있습니다. 이러한 디렉토리 중 일부를 압축해야 하지만 전체(또는 일부)를 압축하고 압축 비율별로 정렬할 공간이 충분하지 않습니다.
따라서 압축할 정도를 결정하기 전에 압축 비율(압축할 수 있는 정도)을 나열해야 합니다.
압축되지 않은 디렉터리의 디렉터리 크기 목록이 있습니다.
du -f --maxdepth=3 > /tmp/list_of_directories
Tar, bz2 또는 gzip을 사용하면 빠른 압축 수준을 사용하여 각 디렉터리를 빈 파이프로 압축할 수 있지만 파일이 보존되지 않으면 압축 비율 통계가 생성되지 않습니다.
어떻게든 전체 콘텐츠를 압축 파이프라인으로 압축해야 하기 때문에 이 솔루션은 처리 집약적이지만 생성 시 압축 결과가 삭제되므로 저장 공간이 매우 적습니다.
즉, "최종 압축 파일을 저장하지 않고 특정 스트림, 파일 또는 디렉터리에 대한 압축 비율 통계를 생성할 수 있는 도구가 있습니까?"라는 질문으로 되돌아갈 수 있습니다.
답변1
이는 디렉터리의 내용을 압축 도구로 파이프하고 압축 스트림을 빈 파이프로 리디렉션하여 수행할 수 있습니다(공간 사용을 방지하기 위해). 압축 도구는 다음을 수행해야 합니다. 1 - 파이프 스트림으로 압축 2 - /dev/null로 압축 가능 2 - 삭제된 파일에 대한 압축 통계 제공
가장 널리 사용되는 도구 중에서 bzip2는 특히 입력 및 출력 바이트의 출력 상태로 인해 가장 적합한 도구입니다.
최종 솔루션은 다음과 같습니다.
cat$(DIRECTORY_PATH 찾기) bzip2 -c --verbose > /dev/null
첫 번째 부분은 선택한 디렉터리에 있는 모든 파일의 모든 내용을 연결합니다.
cat$(DIRECTORY_PATH 찾기)
두 번째 부분은 첫 번째 부분의 연결된 입력을 압축하고 마지막에 단일 보고서(--verbose)를 생성하는 동시에 출력을 빈 파이프로 리디렉션합니다.
bzip2 -c --verbose > /dev/null
출력은 다음과 같아야 합니다. 여기서 "(\d+) in" 정규식은 바이트 디렉터리에 있는 모든 파일의 원시 크기를 캡처하고 "(\d+) in"은 압축된 크기(바이트)를 캡처해야 합니다. 출력은 다음과 같아야 합니다.
1.581:1, 5.059비트/바이트, 36.77% 절약, 1039062개 입력, 657029개 출력.
이 솔루션은 디렉터리의 파일 수에 제한이 있지만 공간을 절약하기 위해 압축 가능성이 좋은 디렉터리를 식별하기 위한 좋은 시작점으로 사용할 수 있습니다.