rsync를 사용하여 모든 *.jar 파일을 강제로 일치시키는 방법은 무엇입니까?

rsync를 사용하여 모든 *.jar 파일을 강제로 일치시키는 방법은 무엇입니까?

많은 파일이 포함된 디렉토리가 있습니다. 내가 관심을 갖는 유일한 것은 확장자가 .jar.인 파일입니다. 그러나 해당 디렉토리에는 다른 파일이 있습니다.

소스 디렉토리가 있습니다오직 .jar문서. 나는 다음과 같은 것을 달성하고 싶습니다:

rm destdir/*.jar
cp sourcedir/*.jar destdir

그런데 사실은 이러지 않았으면 좋겠어제거하다이미 존재하는 파일(이미 올바른 파일인 경우)


즉, 다음과 같은 명령을 실행할 수 있기를 원합니다.

  1. .jar에 존재 sourcedir하지만 존재하지 않는 파일 의 경우 destdir해당 파일을 복사하세요.
  2. 및 에 있는 파일의 경우 의 .jar복사본이 의 복사본과 일치하는지 확인하고 일치하지 않으면 덮어씁니다.sourcedirdestdirdestdirsourcedir
  3. .jar존재하는 모든 destdir것에 대해아니요sourcedir, 파일을 삭제하세요 .
  4. 그 안에 있는 다른 파일 destdir(확장자 없음 ) .jar은 무시하세요. 삭제하거나 변경하지 마세요.

그것~인 것 같다통과해야 합니다 rsync. 어떻게 해야 합니까?

답변1

당신은 그것을 사용할 수 있습니다 :

rsync -av --include='*.jar' --exclude='*' --delete \
    sourcedir/ destdir/

이 옵션은 링크 및 타임스탬프와 같은 항목을 보존하는 보관 모드입니다( 전체 지침은 -a페이지 참조 ). man이는 -v자세한 정보를 제공하기 위한 것입니다. 로그에 관심이 없으면 제거하세요.

이것은 처음 세 가지 옵션을 처리해야 합니다. 이 --delete옵션은 제외된 파일을 무시하면서 네 번째 요구 사항을 충족합니다.

.jar파일이 포함된 디렉토리를 포함하려면 다음을 사용할 수 있습니다.

rsync -av --include='*.jar' --include='*/' --exclude='*' --delete \
    sourcedir/ destdir/

여기에 나온 답변을 바탕으로 추가 질문이 있는 경우 도움이 될 것입니다.Rsync 필터: 하나의 패턴만 복사

관련 정보