rsync 소스 파일을 마지막 매개변수로 정의합니다.

rsync 소스 파일을 마지막 매개변수로 정의합니다.

내가 find정의하는 데 사용한다고 가정원천파일 운영의 경우 rsync다음 두 명령에서만 아는 특수 기능을 사용합니다.

find /path/to/data -mtime -7 -mtime +5 -exec rsync -aAXu {} /path/to/dest \; 

하지만 이 경우에는 as와 +함께 사용할 수 없습니다.-execrsync목적지마지막 주장으로.

이는 매개변수 목록을 생성하고 최소 횟수만 호출하는 rsync대신 일치하는 각 파일이 한 번 호출된다는 의미입니다 .rsync

xargs플래그가 필요하기 때문에 동일한 문제가 발생합니다 . -I이는 -L 1.

설명서에는 이 --destination-dir=dest옵션이 표시되지 않는 것 같습니다.

rsync소스 파일 목록에서 -build-up 명령을 생성하는 쉬운 방법이 있습니까?

어쩌면 이것은 XY 문제이고 다른 명령이 더 적합할까요?

답변1

rsync으로 전화하는 -exec대신 sh -c다음을 호출하세요.

find ... -exec sh -c 'rsync ... "$@" /path/to/dest' sh {} +

이는 단순히 원하는 방식으로 호출되고 전달된 현재 배치에서 찾은 경로 이름인 sh -c인라인 스크립트를 사용하여 호출됩니다 .rsync"$@"find

후행은 인라인 스크립트에 sh배치될 임의의 문자열입니다 . 그렇지 않으면 발견된 첫 번째 경로 이름이 에 배치되어 가 되지 않기 $0때문에 이 작업이 필요합니다 . 의 값은 현재 셸의 이름이어야 하며 셸에서 생성된 모든 진단 메시지에 사용됩니다.$0"$@"$0

관련 정보