f
파일은 있지만 src
디렉터리d
( f
숨겨질 수도 있고 숨길 수도 있음)는 다음과 같은 트리가 있습니다 .
src/f1
src/f2
...
src/d1
src/d2
src/d3
...
dst
동일한 구조를 폴더에 복사하지만 src
해당 폴더에 있는 모든 파일을 제외하고 싶습니다 (예: f1
위 트리의 , , 등. 그러나 f2
다른 폴더의 내용은 제외). 즉, 폴더와 해당 내용(파일, 폴더, 링크, 장치 등)을 모두 복사하고 싶습니다.d1
d2
d3
src
dst
파일을 하나만 사용해야 하며 rsync
가급적이면 파일 하나만 사용해야 합니다(그러나 --exclude-from
다른 방법도 환영합니다).rsync
앵커를 허용하고 " 슬래시 ( )를 제외한 모든 항목과 일치" 를 의미하기 /*
때문에 제외 파일을 넣으려고 했지만 결과적으로 빈 폴더가 생성됩니다./
src
*
/
dst
매우 감사합니다
답변1
manrsync가 말했다:
option --filter=RULE, -f add a file-filtering RULE
그러니 한번 시도해 보세요
rsync -avr -f"+ */" -f"- *" /src/ /dest/
-f"+ */"
-f"- *"
모든 곳에서 파일이 삭제되면 디렉터리가 추가됩니다.
@Kusalananda가 말했듯이 이는 모든 하위 트리의 모든 파일을 방지합니다.
rsync -avr -f"+ */" -f"- /*" /src/ /dest/
또는
rsync -avr --include="*/" --exclude="/*" /src/ /dest/
트리 하위 디렉터리의 파일이 동기화됩니다.
답변2
works를 사용하여 소스 디렉터리의 모든 항목을 제외하려면 /*
디렉터리를 다시 포함하면 됩니다.
sudo rsync -av --include='/*/' --exclude='/*' src/ dest
--exclude='/*'
소스 디렉터리의 모든 파일/디렉터리 제외--include='/*/'
제외를 재정의하고 소스 디렉터리에 해당 디렉터리를 다시 포함합니다. 제외하기 전에 작성해야 합니다.-a
아카이브 모드, 바로가기-rlptgoD
-r
디렉토리로 재귀-l
심볼릭 링크를 심볼릭 링크로 복사-p
예비 권한-t
수정 시간 유지-g
예약된 그룹-o
소유자 유지(수퍼유저만 해당)-D
장치 파일(수퍼유저만 해당)/특수 파일 보존
-v
장황함을 증가시키다