scp 또는 rsync와 함께 find를 사용하여 찾은 파일 보내기

scp 또는 rsync와 함께 find를 사용하여 찾은 파일 보내기

전용 파일 형식을 검색하고 해당 파일과 디렉터리 구조를 원격 서버에 복사하는 간단한 명령을 실행하려고 합니다.

예를 들어:

find Source/ -name *.CR2 | xargs -d '\n' cp --parents -t /STORAGE/location/ 

이 경우 발견된 파일을 상위 폴더 구조의 별도 디렉터리에 복사합니다. rsync나 scp를 사용하여 동일한 작업을 수행하고 싶습니다.

아래 코드에 대해 몇 가지 변경을 시도했지만 운이 없었습니다.

find /src/dir/ -name *.CR2 -printf %P\\0 \ | rsync -av -e ssh --files-from=- --from0 /src/dir/ remote@server:/Storage/

어떤 도움이라도 주시면 감사하겠습니다.

나는 수년간의 가족 사진을 정렬하는 중이며 zfs 배열의 한 디렉토리에서 사진을 찾아서 동일한 배열의 다른 위치에 다시 쓰는 대신(시간이 많이 걸립니다) 대신 가족 사진을 찾아 다른 곳으로 보내고 싶습니다. 유형별로 정렬할 별도의 기계를 실행 fdupes하고 phockup날짜별로 정렬합니다. 실수할 경우를 대비해 이렇게 하고 있습니다. 원본 파일을 안전하게 보관할 수 있습니다.

편집: 내 질문에 응답해 주신 분들께 감사의 말씀을 전하고 싶습니다. 다행스럽게도 답글을 달기 전에 해결책을 찾았지만, 불행히도 해결책이 얼마나 느릴지는 생각하지 못했습니다. 그래서 그냥 예전에 하던 방식대로 하기로 했어요.

이것은 나에게 도움이 되는 코드였습니다. 제대로 작동하려면 SSH 키 핸드오프가 필요했지만 모든 파일에 비밀번호를 입력할 필요는 없었습니다.

find Sorted/ -name *.JPG -exec rsync -a -e ssh --relative '{}' usr@remote:/1/2/3/ ';'

언급된 다른 권장 사항 중 일부를 시도하고 더 빠른지 확인하겠지만 현재로서는 백그라운드에서 실행되는 쉘 스크립트를 만드는 것으로 끝났습니다.

다시 한 번 감사드립니다!

답변1

find Source/ -type f -name '*.CR2' -print0 |
    rsync --dry-run -av --files-from - --from0 . remote@server:/Storage/

--dry-run수행하려는 작업이 만족스러우면 제거하세요 .

답변2

아래 명령을 사용할 수 있습니다

 find  path -type f -iname "filename" -exec scp {} destinationhost:/var/tmp/ \;

관련 정보