내가 find
정의하는 데 사용한다고 가정원천파일 운영의 경우 rsync
다음 두 명령에서만 아는 특수 기능을 사용합니다.
find /path/to/data -mtime -7 -mtime +5 -exec rsync -aAXu {} /path/to/dest \;
하지만 이 경우에는 as와 +
함께 사용할 수 없습니다.-exec
rsync
목적지마지막 주장으로.
이는 매개변수 목록을 생성하고 최소 횟수만 호출하는 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