
파일의 일부 하위 집합을 dirA에서 dirB로 이동하고 싶지만(파일 이름에 "blah"가 포함된 파일 가정) 모든 중첩 디렉터리가 새 위치에서 동일해지기를 원합니다. 어떻게 해야 하나요?
답변1
rsync
필터 규칙의 마법:
$ rsync -av --filter="+ */" --filter="-! *blah*" /source /dest
필터링 규칙에 대한 자세한 내용은 매뉴얼 페이지를 참조하십시오 rsync
. 그러나 여기에는 이러한 특정 요구 사항에 대한 요약 버전이 있습니다.
--filter="+ */"
"디렉토리에 모든 것을 포함한다"는 뜻
--filter="-! *blah*
"파일 이름에 어쩌구 저쩌구(blah)가 포함되지 않은 모든 항목을 제외합니다"를 의미합니다.
답변2
이러한 파일을 복사해야 하는 경우 cp는 다음을 수행합니다.
cd dirA
find . -iname "*blah*" | xargs -If cp --parents f dirB
옵션 --parents
보존 하위 디렉터리 - 대상에 대한 전체 디렉터리 경로를 생성합니다.
답변3
이것은 나에게 효과적입니다.
rsync -ave 'ssh -p 22' --filter="+ */" --exclude="*_blah.blah" [email protected]:/source/directory/ /destination/directory/
스위치는 전송 프로토콜을 -e
정의 rsync
하며 포트는 입니다 -p 22
. 또한 /
프로그램이 디렉토리를 다루고 있음을 알리려면 후행 슬래시가 중요합니다.
근무일에 추가 시간을 내주신 @pdo에게 감사드립니다!