원격 서버에서 여러 유형의 모든 파일을 동기화하는 방법은 무엇입니까? 예를 들어, 서버의 폴더에 있는 모든 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