내 폴더 구조는 다음과 같습니다.
- data
-- user 1
--- images
--- other stuff
-- user 2
--- images
--- other stuff
-- user 3
...
rsync
모든 폴더를 원합니다 images
. 포함/제외 규칙을 사용하면 id
사용자를 미리 알 수 없기 때문에 문제가 발생합니다 . 실제 응용에서는 난수입니다.
나는 이와 같은 것이 필요합니다 data/**/images/
. 이는 데이터 폴더 아래에 모든 이미지 폴더를 가져오는 것을 의미합니다.
ls
파이프나 이와 유사한 치트 없이 이것이 가능합니까 rsync
?
답변1
모든 폴더를 복사하려면 images
간단한 셸 와일드카드로 충분합니다. 그러나 목적지의 경로를 보존하려는 것 같으므로 -R
이를 위해서는 플래그가 필요합니다.
cd /path/to/data
rsync -iavR */images remote:/path/to/destination/
*/images
여기에는 대상 디렉터리 아래 대상의 소스 경로 부분이 포함됩니다 . 따라서 소스 코드가 있으면 /path/to/data/12345/images/picnic.jpg
결국 다음 위치에 복사됩니다./path/to/destination/12345/images/picnic.jpg
대화형으로 실행 중이고 진행 상황을 확인하려면 --progress
또는를 추가하세요.--dry-run