실제로 동기화하지 않고 서버 목록에서 파일을 제거하시겠습니까?

실제로 동기화하지 않고 서버 목록에서 파일을 제거하시겠습니까?

rsync서버에 일부 스크립트를 보내고 싶은 상황이 있습니다 .

rsync -arh --stats --files-from="${LIST}" "${SRC}/" "${HOST}":"${DST}/"

다음 단계에서는 ssh서버로 이동하여 일부 스크립트를 호출하겠습니다.

작업 완료 후 업로드된 파일 목록을 삭제하고 싶습니다.

간단히 말해서, 디렉터리 구조와 관련된 스크립트가 몇 개 있어서 다른 파일이 포함되어 있어서 ssh "${HOST}" rm -rf "${DST}/"그런 건 생각이 안 난다 .${DST}

달성할 수 있는 방법이 있나요?실행 취소rsync매우 멋진 도구 세트를 사용하지 않습니까 ?

답변1

< "$LIST" ssh $HOST xargs -i% rm "$DST/%"

단일 SSH 세션을 사용하십시오.

목록이 파일이고 디렉터리가 없다고 가정하면 후자를 선택 취소하는 것이 번거로울 수 있습니다.

편집: 이전 의견을 설명하려면 질문에 입력 파일 샘플이 포함되어 있지 않다는 점을 고려하여 이에 대해 가정해야 합니다.

입력 파일이 다음과 같은 경우 내 대답이 이를 처리할 수 있어야 합니다.

script1.sh
script2.sh
script3.sh

입력 파일이 다음과 같은 경우:

script1.sh
script2.sh
somedir/

(IE에는 완전한목차복사) 그러면 무엇을 삭제할지 아는 것이 더 어렵다는 것이 밝혀졌습니다 somedir/(우리는 somedir/로컬에서 열거하고 해당 정보를 사용하여 정리해야 합니다).

답변2

이미 파일 목록이 있으므로 가장 쉬운 방법(스크립트가 몇 개만 있다고 말씀하셨기 때문에)은 동일한 파일(예: file.list)을 반복하고 삭제하는 것입니다.

다음과 같이 :

for r in "$(cat ${LIST})"
do
  ssh "${HOST}" rm "${DST}/$r"
done

관련 정보