>

특정 파일 형식 만 재 동기화하고 싶습니다 (예 : .py ) 일부 디렉토리에서 파일을 제외하고 싶습니다 (예 : venv ).

이것은 내가 시도한 것입니다 :

rsync -avz --include='*/' --exclude='venv/' --include='*.py' --exclude='*' /tmp/src/ /tmp/dest/

그러나 작동하지 않습니다.

내가 무엇을 놓치고 있습니까?

또한 this에 대한 답변을 따랐습니다. 질문 하지만 도움이되지 않았습니다.

  • 답변 # 1

    venv/   */ 에서 제외해야합니다.  포함되어 있습니다 :

    rsync -avz --exclude='venv/' --include='*/' --include='*.py' --exclude='*' /tmp/src/ /tmp/dest/
    
    

    미묘한 점은 그 rsync 입니다  규칙을 순서대로 처리하면 첫 번째 일치 규칙이 우선합니다. 만약 --include='*/' 라면   --exclude='venv/' 전에 그런 다음 venv/ 디렉토리   --include='*/' 에 포함  제외 규칙은 참조되지 않습니다.

    이것을 단순화 할 수 있을까요? 와이즈 비즈 와이즈 비즈  그리고

    Why do we need ? 왜 --include='*/' 하지 않습니까  충분합니까?

    기본값은 파일/디렉토리를 포함하는 것입니다. 따라서 다음을 고려하십시오.

    --exclude='*'
    
    
    여기에는 --exclude=venv/ --include='*.py' 아래의 파일이나 디렉토리를 제외한 모든 것이 포함됩니다. . 그러나 당신은 오직 rsync -avz --exclude='venv/' --include='*.py' source target 를 원합니다  파일. 즉, venv/ 를 사용하여 다른 파일을 명시 적으로 제외해야합니다. .

    .py  둘 다파일과 디렉토리를 제외합니다. --exclude='*' 를 지정하면 이면 모든 디렉토리가 제외되고 --exclude='*' 만  루트 디렉토리를 찾을 수 있습니다. 와이즈 비즈   --exclude='*' 때문에 서브 디렉토리의 파일을 찾을 수 없습니다  제외 된 디렉토리를 조사하지 않습니다. 따라서 .py 가 있다면 .py 로 시작해야합니다.  모든 디렉토리의 내용을 탐색하도록합니다.

    rsync

  • 이전 이전 데이터가 손실되지 않도록 Linux Mint를 다시 설치하려면 어떻게해야합니까?
  • 다음 ubuntu - sed를 사용하여 라인의 일부를 표시하는 다른 방법이 있습니까