프로덕션 문제를 해결하는 중인데 zip 명령에 대한 오류 메시지를 재현할 수 없습니다.
현재 솔루션
다음과 같이 메시지를 처리하는 쉘 래퍼에 case-esac 블록이 있습니다.
case "$MSG" in
"This file is not changed; compression does not save space.")
echo "$MSG"
;;
*unchanged*)
echo "$MSG"
;;
*)
echo ERROR
;;
esac
문제 시나리오
래퍼(일부 파일의 경우)를 통해 압축 명령을 호출하면 오류 메시지가 생성됩니다(예:유형 1);
-- file unchanged
그러나 (동일한 파일 세트에 대해) 명령줄에서 동일한 명령을 실행하면 다른 오류 메시지가 생성됩니다(예:유형 2);
This file is not changed; compression does not save space.
누구든지 이 동작을 이해하도록 도와줄 수 있나요? 가능하다면 복사하는 것이 좋습니다.유형 1에러 메시지
답변1
프로그램이 압축 중인 파일 시스템의 블록 크기를 보고 압축 파일 수를 인식하게 되면 "저장된 공간 없음" 메시지가 표시될 수 있습니다.조각생성된 파일에서도 마찬가지입니다. zip 프로그램에서도 비슷한 동작을 볼 수 있습니다. 파일 압축을 거부함으로써 개발자는 성능이 향상된다고 믿습니다.
보다 일반적으로 압축 유틸리티는 결과 파일이 더 작은지 여부만 확인합니다(압축 알고리즘이 오버헤드가 되는 테이블을 추가하기 때문).
예를 들어, IBM 매뉴얼 페이지에는 압축에 -f/-F 옵션이 있음이 나와 있습니다(참조:협회) 어느힘압축.
마지막으로 "압축"은 유틸리티가 파일을 검사하고 접미사 또는 파일이 압축되었음을 나타내는 코드로 시작한다는 사실을 발견할 때 발생합니다.