rsync는 중간 디렉터리를 제외합니다.

rsync는 중간 디렉터리를 제외합니다.

src /foo/bar/.jpg를 dest /foo/.jpg로 동기화하는 rsync 작업을 생성하려고 합니다. 중간 디렉터리는 건너뛰고 최상위 디렉터리는 유지합니다. --include --exclude 옵션을 사용하여 이 작업을 수행할 수 있는 방법이 있다고 확신하지만 아직 찾지 못했습니다.

이것이 src 구조입니다.

   /Volumes/ExtHDD
└── YYMMDD
    ├── foo1
    │   └── bar
    ├── foo2
    │   └── bar
    └── foo3
        ├── image1.jpg
        ├── image2.jpg
        ├── image3.jpg
        └── image4.jpg

그것이 나의 궁극적인 목표입니다.

   /Volumes/OS/Users/user/Dropbox
└── YYMMDD
        ├── image1.jpg
        ├── image2.jpg
        ├── image3.jpg
        └── image4.jpg

나는 노력했다;

rsync -avhW --include='*.jpg' --exclude='*' src dest

그런데 .jpg 파일도 못찾아서 제외옵션이 우선인거 같은데 필터에는 동작순서가 있는거 같아요.

답변1

이러한 파일을 직접 복사할 수 있습니다.

src='/Volumes/ExtHDD'
dst='/Volumes/OS/Users/user/Dropbox'
dir='YYMMDD'

mkdir -p "$dst/$dir"
rsync -av "$src/$dir"/*/*.jpg "$dst/$dir/"

if는 YYMMDD일련의 디렉터리를 나타내고 루프를 사용하여 디렉터리를 탐색합니다.

for dir in "$src"/??????
do
    mkdir -p "$dst/${dir##*/}"
    rsync -av "$dir"/*/*.jpg "$dst/${dir##*/}/"
done

관련 정보