본문 바로가기

직접 만든 소프트웨어, 두 가지 개발 기록

구현 구조와 적용 범위, 확인한 기능과 남은 한계를 함께 기록합니다.

소프트웨어개발

rsync 복사 경로가 한 단계 달라질 때: 소스 끝 슬래시와 dry-run 확인

by 아빠띠띠뽀 2026. 10. 22.

폴더 전체 복사와 폴더 안의 파일 복사를 비교하고 목적지 구조를 점검하는 개념 그림
직접 생성한 개념 이미지입니다. 실제 서비스 화면이나 구축·성능 시험 결과가 아닙니다.

rsync의 소스 디렉터리 끝에 슬래시가 있으면 보통 그 안의 내용을 복사하고, 없으면 디렉터리 이름을 포함하는 차이가 생깁니다. 목적지 상태와 파일 수에 따른 다른 규칙도 있으므로 실행 전 dry-run 결과에서 실제 상대 경로를 확인하세요.

원인: 복사하려는 범위와 입력 경로가 다르다

같은 파일이 들어 있는 폴더라도 “폴더 자체”와 “그 안의 내용”은 목적지 구조가 다릅니다. 소스 끝의 /를 장식처럼 취급하면 배포 파일이 예상보다 한 단계 아래에 놓일 수 있습니다. 반대로 경로 차이를 고친다며 운영 목적지를 삭제하면 별개의 손실을 만들 수 있습니다.

소스 입력 빈 목적지의 예 읽을 범위
source whole/source/demo.txt 디렉터리 이름 포함
source/ contents/demo.txt 안의 내용

1. 버전과 두 절대 경로부터 확인한다

rsync --version
rsync -ani /approved-test/source /approved-test/whole/
rsync -ani /approved-test/source/ /approved-test/contents/

여기의 /approved-test는 설명용 경로이며 그대로 실행할 경로가 아닙니다. 본인이 허용한 시험 폴더로 바꾸고, source와 두 목적지 디렉터리를 미리 준비하세요. -n은 변경을 수행하지 않는 확인이고 -i는 변경 항목 표시입니다. dry-run에 나온 경로를 복사 후 기대하는 파일 트리와 대조합니다.

2. macOS 로컬 임시 폴더의 실제 결과

2026년 10월 21일 macOS 제공 openrsync(protocol version 29)에서 source/demo.txt 하나와 빈 whole·contents 디렉터리를 만들었습니다. 두 dry-run 뒤 같은 소스 표현으로 로컬 복사를 실제 실행했습니다.

소스 끝에 /가 없는 결과는 whole/source/demo.txt였고, /가 있는 결과는 contents/demo.txt였습니다. 목적지 상대 경로 목록을 다시 읽어 확인했습니다. 파일에는 시험 문자열 demo만 들어 있었고, 운영 데이터·원격 서버·심볼릭 링크·소유권 이전은 시험하지 않았습니다. 다른 구현이나 목적지 상태에는 설치된 버전의 문서를 함께 적용해야 합니다.

3. 같은 조건으로 미리보기와 실행을 연결한다

실제 복사 직전에 소스·목적지·옵션이 검토한 dry-run과 같은지 다시 봅니다. 그 사이 소스가 바뀌면 확인 결과도 달라질 수 있습니다. 복사 후에는 종료 상태와 실제 파일 목록을 확인하고, 업무상 필요한 경우 내용 비교와 애플리케이션 동작도 별도로 검사하세요.

검토 범위는 “명령이 끝났는가”보다 “기대한 파일이 기대한 위치에 있는가”입니다. 복구를 위해 덮어쓸 수 있는 목적지 파일은 사전에 승인된 별도 위치에 보존하고, 예상과 다르면 추가 복사를 멈춘 뒤 경로 차이를 확인합니다.

삭제·원격 전송 시 주의

이 예시는 --delete를 사용하지 않았습니다. 운영 파일을 지우는 옵션을 경로 문제의 기본 해결책으로 추가하지 마세요. 또한 원격 전송은 계정·호스트·접근 권한과 전송 방식 검토가 더 필요하며, 이번 로컬 시험은 그 안전성을 증명하지 않습니다. 파일 하나나 와일드카드, 기존 목적지의 상태는 별도 규칙을 만들 수 있으므로 단순 표를 모든 입력에 일반화하지 않습니다.

FAQ

끝의 /만 맞으면 충분한가요? 실제 소스 목록과 목적지가 디렉터리인지도 확인하세요.

dry-run 성공이면 복사 검수도 끝인가요? 실행 후 파일 위치와 필요한 내용 검증이 남습니다.

복사 경로가 다르면 목적지를 지워도 되나요? 기존 파일을 먼저 보존하고 원인을 확인하세요.

공식 출처와 관련 글

자료 확인일: 2026년 10월 21일. macOS 제공 openrsync protocol 29의 빈 임시 로컬 목적지. 원격 SSH·운영 배포·삭제 시험 없음. 임시 로컬 시험 결과만 구분해 기록했습니다.

rsync 공식 매뉴얼

관련 글: 실제 저장 경로와 용량 확인