피드로 돌아가기
Dev.toDevOps
원문 읽기
rsync 바이너리 파편화 해결을 통한 .git 데이터 유실 방지 설계
Build & Release #5: How Apple's rsync Update Nuked My Repo
AI 요약
Context
Private Repo에서 Public Repo로 소스 코드를 동기화하기 위해 rsync 기반 스크립트 운용. macOS 업데이트로 GNU rsync가 openrsync로 대체되며 --filter='P .git' 플래그의 동작 방식이 변경되어 .git 폴더가 삭제되는 장애 발생.
Technical Solution
- OS 수준의 바이너리 구현 차이로 인한 불확실성을 제거하기 위해 rsync에 대한 의존성 제거
- 동기화 시작 전
.git폴더를/tmp경로로 물리적으로 분리하여 삭제 가능성 원천 차단 - rsync 실행 시
--exclude='.git'설정을 병행하여 2중 방어 체계 구축 trap EXIT구문을 활용하여 스크립트 비정상 종료 시에도 백업된.git폴더를 자동 복원하는 메커니즘 구현- 동기화 완료 후
git remote -v를 통해 Remote 설정의 무결성을 검증하는 단계 추가
실천 포인트
1. OS 업데이트 후 기본 설치된 CLI 도구의 버전 및 구현체(GNU vs BSD) 변경 여부 확인
2. 중요 파일 보호 시 `--exclude` 옵션 외에 물리적 백업 및 복구 프로세스 검토
3. Git Merge 전 `git diff --stat`을 통한 변경 규모 정량적 확인 습관화
4. 자동화 스크립트 내 상태 변경 후 최종 결과물을 검증하는 Assertion 단계 추가