답변:
더 좋은 방법이있을 수 있지만 효율적이지는 않지만 작동 할 수 있습니다.
rsync -vrn / dest:/ > ~/file_list
그런 다음 테스트를 편집하여 통계를 제거한 다음 :
while read file; do
diff $file <(ssh dest "cat $file")
done < ~/edited_file_list
다른 옵션 :
sshfs / fuse와 같은 파일 시스템을 마운트 한 다음 diff를 사용하는 것도 고려할 수 있습니다.
rsync --diff
2 년 후에 새롭고 더 나은 방법이 있는지 확인하는 중 ...
패치 만들기 :
rsync -arv --only-write-batch=patch old/ new/
그것을 신청하십시오 :
rsync -arv --read-diff=patch dir/
또는 자동 생성 된 스크립트를 사용하십시오.
./patch.sh
출처 :
rsync는 파일 간의 이진 차이 만 처리하므로 기본적으로 가능하지 않습니다.
rsync의 출력을 사용하여 스크립트를 작성할 수 있습니다. 그러나 그것은 해킹 일 것입니다.
그래도 Unison 과 함께 가능하다고 생각합니다 .
Kyle의 답변을 확장하기 위해 프로세스가 자동화됩니다. 완전히 테스트되지 않았으며, 깨지기 쉬우 며 컴퓨터를 삭제하고 개를 죽일 수 있습니다.
#!/bin/bash
REMOTE=${1?Missing Remote Path}
LOCAL=${2?Missing Local Path}
# Trim trailing slash since we'll be adding it as a separator later
REMOTE=${REMOTE%/}
LOCAL=${LOCAL%/}
#Break it down
RHOST=${REMOTE%:*}
RPATH=${REMOTE#*:}
while read FILE; do
diff -u ${LOCAL}/${FILE} <(ssh $RHOST "cat ${RPATH}/${FILE}")
done < <(rsync -vrn $REMOTE/ $LOCAL/ | sed '1d;/^$/q')