실패할 수 있는 백업 명령의 표준 출력을 처리하는 가장 Unix와 유사한 방법은 무엇입니까?

실패할 수 있는 백업 명령의 표준 출력을 처리하는 가장 Unix와 유사한 방법은 무엇입니까?

저는 원격 서버의 데이터를 백업하고 이를 표준 출력으로 출력하는 Linux에서 실행되는(Python으로 작성되는) 유틸리티/스크립트를 작성하고 있습니다. 현재 저는 cron에서 정시에 이 스크립트를 실행하고 출력을 다음과 같은 파일로 리디렉션합니다.

./mybackupscript > ~/backups/mybackup파일

때때로 백업이 실패합니다(예: 네트워크 연결이 중단되거나 원격 서버 시간 초과). 이는 표준 출력 콘텐츠가 불완전하거나 누락되었음을 의미합니다. 유틸리티는 잘 작동합니다. 이런 일이 발생하면 0이 아닌 종료 코드로 종료됩니다. 그러나 현재 백업 파일은 여전히 ​​비어 있거나 불완전합니다. 나는 그것이 원래의 내용(내 스크립트의 마지막 성공적인 실행으로부터)을 유지하기를 원합니다.

백업을 더욱 강력하게 만들기 위해 이 문제를 처리하는 가장 적절한 "Unix-y" 방법은 무엇입니까? 백업이 유효한 경우에만 임시 파일로 출력한 다음 최종 파일에 복사해야 합니까?

답변1

백업이 유효한 경우에만 임시 파일로 출력한 다음 최종 파일에 복사해야 합니까?

복사하지 않고 이름을 바꿉니다.

그러나 백업 스크립트가 stdout. 이 작업은 외부에서 수행해야 합니다.

if ./script.sh >backup.tmp; then
  mv backup.tmp backup
else
  rm backup.tmp
fi

관련 정보