Commit Graph

2 Commits (43c8dab04cc26e60b6e7902fcd5bd18a5f5d42d2)

Author SHA1 Message Date
RyuJongJin d7da812da6 거르기: "이름/***" 을 경로로 맞춤 - "P keep/***" 가 받는 쪽에만 있는 안쪽 폴더까지 지킴 (검토 대기)
28 확인 (10/20, c593440 독립 확인 22개 중 1개 - 안전한 쪽으로 다름): -a --delete --filter="R keep/extra.txt" --filter="P keep/***",
받는 쪽에만 keep/extra.txt · keep/sub/deep.txt 가 있으면 실제 rsync 는 keep/extra.txt 만 지우는데, 미리 보기 · 실시간 동기화의
묻는 목록은 keep/sub/ 까지 지운다고 보였다 (맞춘 뒤에도 지울 것으로 남음).
원인: "이름/***" 의 끝을 떼고 나면 패턴에 / 가 없어 이름으로만 맞췄다 - keep/sub 는 이름이 sub 라 맞지 않음. 원래 패턴에 / 가
있으므로 rsync 처럼 경로 (끝부분) 로 맞춘다. 보내는 쪽에서는 거른 폴더 안으로 내려가지 않아 드러나지 않았다.
rsync_phsr_test 에 28 의 장면 (keep/k.txt · 받는 쪽 keep/extra.txt · keep/sub/deep.txt) 과 *** 장면 4개 - 고치기 전에는 32 · 33 번 실패.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 14:15:50 +09:00
RyuJongJin c593440249 거르기: H · S · P · R 과 고치개 ,s · ,r 을 rsync 와 똑같이 따름 - 미리 보기 · 원격 맞추기 · 실시간 동기화 (검토 대기)
관리자 지시 (10/20, 데이터 쪽): 예전에는 이 규칙들을 "미리 볼 수 없음" 으로 두고 경고만 했다. 이제 rsync (man rsync FILTER RULES ·
exclude.c) 와 같게:
- 규칙마다 걸리는 쪽 (RuleSide): 그냥 + · - 는 양쪽, H (hide) = -,s · S (show) = +,s 는 보내는 쪽 (보낼 것 고르기) 에만,
  P (protect) = -,r · R (risk) = +,r 은 받는 쪽 (지울 것 고르기) 에만. ",sr" 은 양쪽. 긴 이름 (hide · show · protect · risk) 도.
- 쪽마다 그 쪽에 걸리는 규칙만 위에서부터 보고 처음 맞는 것이 이긴다 (RsyncFilter.excluded = 보내는 쪽, protects = 받는 쪽).
- --delete-excluded 면 쪽을 적지 않은 규칙은 보내는 쪽에만 (rsync 와 같음 - 예전 동작과도 같은 결과).
- 지울 때 (previewSync · _mirrorV · 실시간 동기화 diff/_gone) 는 "거른 것 · --delete-excluded 아님" 대신 protects 로 지킨다:
  보내는 쪽에서만 거른 것 (H · -,s) 은 보내지 않았으므로 --delete 면 지운다 (28 의 a.txt 와 같은 일을 이제 미리 보기가 보임).
- 그 밖의 고치개 (,! · ,p · ,x · ,e 등) · H/S/P/R 에 붙은 고치개 · merge · "!" · exclude-from 파일 안의 규칙 머리는 그대로 미리 볼 수 없음.
기준 시험 rsync_phsr_test: 규칙 장면 31개 (양쪽에 같은 이름이 많은 장면) 마다 실제 rsync 를 돌린 (-n 아님) 결과 트리와
① 미리 보기로 예측한 트리 ② 원격 맞추기 (WebDAV) ③ 실시간 동기화 로컬 쌍 (묻는 목록 = rsync 가 지운 것 · 맞춘 뒤 맞출 것 없음)
④ 실시간 동기화 WebDAV 쌍 - 모두 같음. protects 를 예전처럼 (쪽 무시) 바꾸면 25개 장면이 다르게 나오는 것도 확인 (시험이 잡음).
바꾼 시험: rsync_filter_test (이 규칙들은 미리 볼 수 있음 · 15 재현은 이제 미리 보기도 a.txt 지움), P0 시험 · 경고 창 시험 ·
P0 캡처는 아직 따르지 못하는 merge 규칙 (파일 안에 "H a.txt") 으로, P 는 이제 따르므로 "묻는 목록에 지킨 것 없음" 으로.
smb_test 의 28 장면 시험에 5분 (여러 시험을 함께 돌리면 기본 30초를 넘음).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 14:04:28 +09:00