문제점: 바이트는 맞는데 Finder 의미는 갈라진다
처리량 지표와 테스터 체감(대화상자·태그·격리)은 다른 성공 정의입니다. rsync -a는 APFS 전 필드를 약속하지 않으며 버전 없는 “항상 -a” 정책은 소수 업그레이드에 취약합니다.
Linux·오브젝트 스토리지·Mac 사이 홉은 Apple xattr를 중간에서 잃을 수 있어 홉마다 책임이 필요합니다. xattr 누락이 즉시 codesign --verify를 깨지 않아도 공증·Gatekeeper는 뒤에서 터질 수 있으니 서명 런북과 전송을 한 묶음으로 보세요.
xattr 스캔은 IO가 듭니다. 스캔 시간과 전송 시간을 분리해 재지합니다. GUI SFTP와 CLI rsync 기본값은 다릅니다—동시 세션 가이드로 정렬하고, chroot SFTP는 소유 규칙 때문에 xattr 쓰기가 중간 실패할 수 있어 chroot 가이드와 같이 봅니다.
메타데이터 모델: APFS가 파일 바이트 너머에 싣는 것
APFS 확장 속성은 태그·아이콘·격리·앱 메타를 싣고 ACL은 POSIX를 보완합니다. 격리는 Gatekeeper와 직결되므로 임의 제거는 격리 판단표와 충돌할 수 있습니다.
링크·원자 승격은 볼륨 토폴로지와 함께 봐야 합니다. 원자적 릴리스와 rsync 플래그를 같은 설계에 넣으세요. 구현은 openrsync 가이드로 버전을 고정합니다. WAN이 병목이면 대용량 전송 판단표와 메타 정책을 같이 조정합니다.
체크섬은 바이트 동일, xattr 검사는 macOS 표현 동일을 답합니다. 둘 다 릴리스 템플릿에 포함하는 것이 성숙한 기본값입니다.
측정 기준: 의견 루프를 끊는 숫자
이미지 변경 시 양쪽 rsync --version을 티켓에 남기고, 체크섬 변경은 무결성 글과 같은 티켓에 매니페스트 경로를 적습니다. 대표 번들에서 xattr 밀도를 샘플링하면 -aE 필요성이 철학이 아니라 숫자로 결정됩니다.
스캔·델타·전송·fsync 시간을 분리합니다. 결함은 타임아웃·권한·체크섬·codesign·메타 드리프트로 나눠 추적하세요. 서명 앱·ACL·격리·태그가 들어간 골든 번들로 OS·rsync 업 후 속성 diff를 자동화합니다.
인프라 변경과 메타 이슈를 섞지 말고, 파이프라인 변경은 OIDC·배포 자격 검토와 묶습니다. 미지원 rsync 플래그는 린트로 막고 실험 롤백은 런북에 적습니다.
판단표: rsync 모드와 tar 스테이징
| 모델 | 적합 | 이점 | 리스크 |
|---|---|---|---|
rsync -a | 바이트만 중요 | 단순 | xattr·라벨 유실 |
rsync -aE | Mac↔Mac 동질 경로 | xattr 우호 | 보장 한계·스캔 비용 |
Mac tar | 서명 번들·스크립트 검증 | 풀기 체크포인트 명확 | 디스크 피크 |
| Linux tarball→Mac 정리 | 혼합 OS | 홉 단순화 | 문서 부담 |
| 격리 제거 | MDM·승인된 정책 | UX 안정 | 보안 리뷰 |
태그 손실이 실패 조건이면 xattr 정책을 체크섬·호스트 키 고정과 같은 승인층에 올리세요.
실무 절차: 복사해 조정할 명령
# 원격 Mac 소스에서 xattr 밀도 샘플
# find Sample.app -print0 | xargs -0 -I{} xattr -l "{}" | head
# 동질 APFS 동기화 시도(본인 rsync 빌드에 맞게 플래그 검증)
# rsync -aE --delete --partial --partial-dir=.rsync-partial \
# ./Sample.app/ user@remote-mac:/Volumes/builds/Sample.app/
# 서명 민감 번들용 tar 경로
# COPYFILE_DISABLE=1 tar -czf Sample.app.tgz Sample.app
# rsync -av Sample.app.tgz user@remote-mac:/Volumes/incoming/
# ssh user@remote-mac 'cd /Volumes/builds && tar -xzf /Volumes/incoming/Sample.app.tgz'
# 전송 후 게이트
# shasum -a 256 -c manifest.sha256
# codesign --verify --deep --strict --verbose=2 Sample.app
# 감사를 위해 양 끝 rsync 버전 로그
액션으로 감싸고 DerivedData 제외와 known_hosts를 같이 검토하세요.
읽는 순서와 CTA 정렬
순서 제안: openrsync → 체크섬 → codesign → 격리 → 원자 릴리스 → 홈. 체크섬·메타·호스트 키를 한 승인표에 넣지 않으면 거짓 트레이드오프가 납니다.
동기화 성공을 로컬 핫 리로드와 혼동하면 IDE fsevents 글을 함께 보세요. CI 입력 이름에 메타 모드·매니페스트·검증 명령을 박아 자정 플래그 삭제를 줄입니다.
FAQ와 SFTPMAC 호스팅 원격 Mac이 도움이 될 때
GUI SFTP가 규율 잡힌 rsync 플래그를 대체하나요?
소량 배치에는 그럴 때도 있지만 자동화는 버전이 있는 명령이 필요합니다. 조직 이야기를 하나로 정하세요.
-aE가 CI를 크게 느리게 하나요?
큰 트리에서는 스캔 부담이 눈에 띌 수 있습니다. 경로를 샤딩하거나 메타데이터가 많은 하위 트리만 따로 동기화하세요.
tar가 항상 더 안전한가요?
Mac에서 검증 체크포인트를 단순화할 뿐 마법은 아닙니다. 매니페스트와 서명 단계는 여전히 필요합니다.
감사에는 어떻게 맞추나요?
전송 로그는 누가 바이트를 옮겼는지, xattr 검토는 Mac에 파일이 어떻게 보이는지를 보여 줍니다. 두 관점을 합치세요.
요약: APFS 메타는 릴리스 입력입니다. rsync·tar·버전·골든 번들·체크섬·codesign을 한 세트로 운영하세요.
한계: 자체 함대는 이미지·rsync·키·동시성·감사를 직접 유지합니다. SFTPMAC는 Apple 친화 가동, SFTP·rsync 인그레스, 런북으로 운영 부담을 줄여 서명 산출물에 집중하게 합니다.
메타 정책을 체크섬·호스트 키 고정과 같은 감사 자리에 두세요.
