아카이브 확인 `gzip -v -t`가 stderr로 성공적으로 인쇄됩니다. 아니면 제가 뭔가 잘못하고 있는 걸까요? [복사]

아카이브 확인 `gzip -v -t`가 stderr로 성공적으로 인쇄됩니다. 아니면 제가 뭔가 잘못하고 있는 걸까요? [복사]

백업 스크립트에 gzip 파일 확인을 추가하고 싶습니다.

내 백업 스크립트는 다음과 같이 stdout 및 stderr에 대한 로그를 생성합니다.

scp -i $BCKIDENTITYFILE $BCKLOG "$BCKREMOTEUSER"@"$BCKHOST":$BCKREMOTEDIR 2>> $BCKERRLOG 1>> $BCKLOG

내가 이것을 테스트할 때:

# this prints OK to error.log, nothing to output.log
gzip -v -t existingfile.sql.gz 2>> error.log 1>> output.log 

# prints missing file message to error.log, nothing to output.log
gzip -v -t notexistingfile.sql.gz 2>> error.log 1>> output.log 

내가 뭘 잘못했나요?

답변1

문제는 표준 오류 2>>(2>>) 및 표준 출력(1>>) 스트림을 별도의 로그 파일로 리디렉션하지만 gzip이 상태 정보와 오류 메시지를 표준 오류 스트림에 쓰고 있다는 것입니다.

gzip -v -t Existingfile.sql.gz 명령을 실행할 때 -v 옵션을 사용하면 gzip이 파일 이름, 원본 및 압축 크기, 압축 비율 등 압축 파일에 대한 추가 정보를 인쇄합니다. 이 정보는 표준 오류 스트림에 기록되며 스크립트의 error.log 파일로 리디렉션됩니다.

파일이 존재하지 않는 경우에는 "gzip: noteexistingfile.sql.gz: 해당 파일 또는 디렉터리가 없습니다."라는 메시지도 표준 오류 스트림으로 전송되며, 이는 error.log로 리디렉션됩니다.

이 문제를 해결하려면 표준 오류와 표준 출력 스트림을 동일한 파일로 리디렉션하여 상태 정보와 오류 메시지가 모두 output.log 파일에 기록되도록 할 수 있습니다.

gzip -v -t 기존 file.sql.gz &>> output.log 표준 오류와 표준 출력을 output.log 파일로 리디렉션하므로 gzip 확인 결과를 하나의 파일에서 볼 수 있습니다.

또는 다음과 같이 표준 오류를 표준 출력으로 리디렉션한 후 표준 출력을 output.log 파일로 리디렉션할 수 있습니다.

gzip -v -t 기존 파일.sql.gz 2>

관련 정보