현재 저는 하위 디렉터리의 파일만 포함하고 다른 모든 파일은 제외하는 솔루션을 찾기 위해 고심하고 있습니다. 파일 구조는 다음과 같습니다
$ tree ../
../
├── from
│ ├── a
│ │ ├── aa
│ │ │ └── x.txt
│ │ ├── a.txt
│ │ └── b.txt
│ └── b
│ ├── b.txt
│ └── c.txt
└── to
그리고 a/aa/의 내용만 /로 전송됩니다.
$ rsync -avh --include=a/aa/*** --exclude=* ../from/ ../to/
작동하지 않고 to/는 비어 있지만 a/를 사용하여 이 작업을 수행합니다.
$ rsync -avh --include=a/*** --exclude=* ../from/ ../to/
효과가있다
$ tree ../
..
├── from
│ ├── a
│ │ ├── aa
│ │ │ └── x.txt
│ │ ├── a.txt
│ │ └── b.txt
│ └── b
│ ├── b.txt
│ └── c.txt
└── to
└── a
├── aa
│ └── x.txt
├── a.txt
└── b.txt
하지만 a.txt와 b.txt가 있으면 안 됩니다. 내가 놓친 게 무엇입니까?
당신의 도움을 주셔서 감사합니다.
답변1
첫 번째 명령에서는 이후의 모든 명령이 a/aa/***
일치 하지만 일치하는 항목이 없으므로 아무것도 복사되지 않습니다.aa/
a/
두 번째 명령에서는 그 뒤에 오는 모든 항목을 a/***
일치시키므로 콘텐츠 a/
이상의 내용을 복사하게 됩니다 .a/aa/
예를 들어 다음과 같이 하면 충분합니다.
rsync -avh --include='/a/' --include='/a/aa/***' --exclude='*' from/ to/
man rsync
도착하다INCLUDE/EXCLUDE PATTERN RULES