여러 와일드카드를 사용한 재동기화

여러 와일드카드를 사용한 재동기화

원격 서버에서 여러 유형의 모든 파일을 동기화하는 방법은 무엇입니까? 예를 들어, 서버의 폴더에 있는 모든 pdf와 png를 동기화하고 싶습니다.

구문 오류가 발생합니다.rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH

나도 시도해봤는데 rsync --include='*.png' --include='*.pdf' --exclude='*' REMOTE_SERVER:REMOTE_PATH/ LOCAL_PATH아무것도 동기화되지 않습니다( exclude앞에 있는 경우에도 동일).

현재 도움을 찾고 있지만 rsync REMOTE_SERVER:REMOTE_PATH/*.pdf LOCAL_PATH; rsync REMOTE_SERVER:REMOTE_PATH/*.png LOCAL_PATH단일 명령으로 이 작업을 수행하고 싶습니다.

답변1

노력하다:

rsync -av --include='*.pdf' --include='*.png' --exclude='*' REMOTE_SERVER:REMOTE_PATH/ LOCAL_PATH

중첩된 디렉터리 구조를 사용하는 경우 다음을 사용할 수 있습니다.

rsync -av --include='*/' --include='*.pdf' --include='*.png' --exclude='*' REMOTE_SERVER:REMOTE_PATH/ LOCAL_PATH

관련 파일 형식을 포함하고 다른 모든 형식을 제외하기 위해 제외 및 포함을 사용했습니다.

도움이 되길 바랍니다

답변2

무슨 일이 일어나는지 봅시다. 나는 당신이 bash중괄호 확장을 이해하는 다른 쉘을 사용하고 있다고 가정합니다.

rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH

이 접두어를 붙이면 echo중괄호가 확장되지 않는 것을 볼 수 있습니다.

echo rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH
rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf, *.png} LOCAL_PATH

그리고 rsync세 가지 매개변수인 REMOTE_SERVER:REMOTE_PATH/{*.pdf,, *.png}및 를 확인하세요 LOCAL_PATH.

원래 문제는 교정기 내부에 공간이 있어서 구조가 깨졌다는 것이었습니다. 이것이 더 정확합니다:

echo rsync REMOTE_SERVER:REMOTE_PATH/{*.pdf,*.png} LOCAL_PATH

이제 rsync다음 세 가지 매개변수를 확인하세요 REMOTE_SERVER:REMOTE_PATH/*.pdf.REMOTE_SERVER:REMOTE_PATH/*.png LOCAL_PATH

그러면 지정된 원격 디렉터리의 모든 PDF 및 PNG 파일이 로컬 대상으로 복사됩니다. 하지만 rsync파일 수정 시간( --times, , 또는 )을 포함 하지 않았기 때문에 최적화되지 않았습니다 -t.

rsync --times REMOTE_SERVER:REMOTE_PATH/{*.pdf,*.png} LOCAL_PATH

루트 트리에서 모든 PDF 및 PNG 파일을 복사하려면 REMOTE_PATH완전히 다른 접근 방식이 필요합니다.

rsync --recursive --times --include '*.pdf' --include '*.png' --include '**/' --exclude '*' --prune‐empty‐dirs REMOTE_SERVER:REMOTE_PATH LOCAL_PATH

관련 정보