![아카이브 확인 `gzip -v -t`가 stderr로 성공적으로 인쇄됩니다. 아니면 제가 뭔가 잘못하고 있는 걸까요? [복사]](https://linux55.com/image/215602/%EC%95%84%EC%B9%B4%EC%9D%B4%EB%B8%8C%20%ED%99%95%EC%9D%B8%20%60gzip%20-v%20-t%60%EA%B0%80%20stderr%EB%A1%9C%20%EC%84%B1%EA%B3%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%9D%B8%EC%87%84%EB%90%A9%EB%8B%88%EB%8B%A4.%20%EC%95%84%EB%8B%88%EB%A9%B4%20%EC%A0%9C%EA%B0%80%20%EB%AD%94%EA%B0%80%20%EC%9E%98%EB%AA%BB%ED%95%98%EA%B3%A0%20%EC%9E%88%EB%8A%94%20%EA%B1%B8%EA%B9%8C%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
백업 스크립트에 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>