rsync 공유에서 특정 원격 디렉터리를 완전히 제거하는 rsync 명령이 있습니까? 내 말은 디렉토리 내용뿐만 아니라 디렉토리 자체도 삭제한다는 것입니다. 그리고 상위 디렉터리 전체가 매우 클 수 있으므로 다시 동기화할 필요가 없습니다.
답변1
내 질문에 대답하려면... 실제로 원격 서버에서 디렉터리(디렉터리 자체 포함)를 완전히 삭제하는 것이 가능합니다. 아래 예를 확인하세요.
rsync -r --delete --include 'x/***' --exclude '*' local_empty_directory/ rsync://some_server/some_share/x_parent_directory
핵심은 로컬 빈 디렉토리로 상위 디렉토리 x
( 예를 들어)를 정리하는 동시에 삭제하려는 디렉토리( 예를 들어)와 그 내용 만 포함한 모든 것을 제외하는 것입니다 .x_parent_directory
local_empty_directory
--exclude '*'
x
--include 'x/***'
답변2
rsync 매뉴얼 페이지에 따라 --exclude를 사용할 수 있습니다.
--제외=패턴
이 옵션은 --filter 옵션의 축약형으로, 기본적으로 규칙을 제외하고 일반 필터링 규칙의 전체 규칙 구문 분석 구문을 허용하지 않습니다.
--제외=파일
이 옵션은 --exclude 옵션과 관련되어 있지만 제외 패턴(한 줄에 하나씩)이 포함된 FILE을 지정합니다. 파일에서 ";" 또는 "#"으로 시작하는 빈 줄은 무시됩니다. FILE이 -이면 표준 입력에서 목록을 읽습니다.
답변3
rsync를 사용하여 원격 디렉터리를 삭제할 수 없습니다. 가장 좋은 방법은 삭제하는 것입니다.모든 파일원격 디렉터리에서는 "--remove-source-files" 옵션을 사용합니다. 매뉴얼 페이지에서:
이는 전송의 일부이고 수신 측에서 성공적으로 복사된 파일(즉, 디렉터리가 아닌)을 전송 측에서 삭제하도록 rsync에 지시합니다.
또는 SSH를 통해 간단히 rm 명령을 실행할 수도 있습니다. 예를 들면 다음과 같습니다.
ssh root@remote_ip -c "rm -rf /somedir"