다음은 배치 모드에 대한 rsync 설명서 페이지의 정보입니다.
배치 모드
배치 모드를 사용하여 동일한 일련의 업데이트를 여러 동일한 시스템에 적용 할 수 있습니다. 하나의 트리가 여러 호스트에 복제되어 있다고 가정합니다. 이제이 소스 트리에서 일부 변경 사항이 작성되었으며 해당 변경 사항이 다른 호스트로 전파되어야한다고 가정하십시오. 배치 모드를 사용하여이 작업을 수행하기 위해 소스 트리의 변경 사항을 대상 트리 중 하나에 적용하기 위해 write-batch 옵션과 함께 rsync가 실행됩니다. write-batch 옵션은 rsync 클라이언트가 다른 동일한 대상 트리에 대해이 작업을 반복하는 데 필요한 모든 정보를 "일괄 파일"에 저장합니다.
배치 파일을 한 번 생성하면 여러 대상 트리를 업데이트 할 때 파일 상태, 체크섬 및 데이터 블록 생성을 두 번 이상 수행하지 않아도됩니다. 멀티 캐스트 전송 프로토콜을 사용하여 모든 호스트에 동일한 데이터를 개별적으로 전송하는 대신 일괄 업데이트 파일을 여러 호스트에 동시에 병렬로 전송할 수 있습니다.
기록 된 변경 사항을 다른 대상 트리에 적용하려면 동일한 배치 파일의 이름과 대상 트리를 지정하여 읽기 배치 옵션으로 rsync를 실행하십시오. Rsync는 배치 파일에 저장된 정보를 사용하여 대상 트리를 업데이트합니다.
편의를 위해 write-batch 옵션을 사용할 때 스크립트 파일도 작성됩니다. ".sh"가 추가 된 배치 파일과 동일하게 이름이 지정됩니다. 이 스크립트 파일에는 관련 배치 파일을 사용하여 대상 트리를 업데이트하는 데 적합한 명령 줄이 포함되어 있습니다. Bourne (또는 Bourne와 유사한) 쉘을 사용하여 실행될 수 있으며, 선택적으로 대체 대상 트리 경로 이름을 전달한 다음 원래 대상 경로 대신 사용됩니다. 현재 호스트의 대상 트리 경로가 배치 파일을 만드는 데 사용 된 경로와 다른 경우에 유용합니다.
Examples:
$ rsync --write-batch=foo -a host:/source/dir/ /adest/dir/
$ scp foo* remote:
$ ssh remote ./foo.sh /bdest/dir/
$ rsync --write-batch=foo -a /source/dir/ /adest/dir/
$ ssh remote rsync --read-batch=- -a /bdest/dir/ <foo
이 예에서 rsync는 / source / dir /에서 / adest / dir /을 업데이트하는 데 사용되며이 작업을 반복하기위한 정보는 "foo"및 "foo.sh"에 저장됩니다. 그런 다음 "remote"호스트가 / bdest / dir 디렉토리로 이동하는 배치 된 데이터로 업데이트됩니다. 두 예제의 차이점은 배치를 처리하는 방법에있어 몇 가지 유연성을 나타냅니다.
첫 번째 예는 초기 사본이 로컬 일 필요는 없음을 보여줍니다. 원하는대로 원격 쉘 구문 또는 rsync 데몬 구문을 사용하여 원격 호스트에서 데이터를 푸시하거나 가져올 수 있습니다.
첫 번째 예는 생성 된 "foo.sh"파일을 사용하여 원격 호스트에서 read-batch 명령을 실행할 때 올바른 rsync 옵션을 가져옵니다.
두 번째 예는 표준 입력을 통해 배치 데이터를 읽으므로 배치 파일을 원격 시스템에 먼저 복사 할 필요가 없습니다. 이 예제는 수정 된 --read-batch 옵션을 사용해야했기 때문에 foo.sh 스크립트를 사용하지 않지만 스크립트 파일을 사용하려는 경우 스크립트 파일을 편집 할 수 있습니다 (다른 옵션이 표준을 사용하지 않도록하십시오) "--exclude-from =-"옵션과 같은 입력).
주의 사항 :
읽기-배치 옵션은 업데이트중인 대상 트리가 배치 업데이트 파일 세트를 작성하는 데 사용 된 대상 트리와 동일 할 것으로 예상합니다. 대상 트리간에 차이가 발생하면 경고 (파일이 이미 최신 상태 인 것으로 보이면)와 함께 업데이트가 삭제되거나 파일 업데이트가 시도 된 후 파일을 확인하지 못한 경우 , 업데이트가 오류와 함께 삭제되었습니다. 즉, 명령이 중단 된 경우 읽기 일괄 작업을 다시 실행하는 것이 안전해야합니다. 파일 크기와 날짜에 관계없이 배치 업데이트를 항상 강제로 수행하려면 -I 옵션을 사용하십시오 (배치를 읽을 때). 오류가 발생하면 대상 트리가 부분적으로 업데이트 된 상태 일 수 있습니다. 이 경우
모든 대상에서 사용되는 rsync 버전은 적어도 배치 파일을 생성하는 데 사용 된 버전과 같아야합니다. 배치 파일의 프로토콜 버전이 배치 판독 rsync가 처리하기에 너무 새 버전이면 Rsync가 오류와 함께 종료됩니다. rsync를 생성하여 이전 rsync가 이해할 수있는 배치 파일을 생성하게하려면 --protocol 옵션을 참조하십시오. (배치 파일은 버전 2.6.3에서 변경되었으므로 이전 버전보다 이전 버전을 혼합하면 작동하지 않습니다.)
배치 파일을 읽을 때 rsync는 배치 쓰기 명령과 동일하게 설정하지 않은 경우 특정 옵션의 값이 배치 파일의 데이터와 일치하도록합니다. 다른 옵션도 변경할 수 있습니다. 예를 들어 --write-batch가 --read-batch로 변경되고 --files-from이 삭제되고 --delete 옵션 중 하나가 지정되지 않으면 --filter /-include /-exclude 옵션이 필요하지 않습니다. .
BATCH.sh 파일을 작성하는 코드는 모든 필터 / 포함 / 제외 옵션을 쉘 스크립트 파일에 "여기"문서로 추가 된 단일 목록으로 변환합니다. --delete로 삭제 된 항목을 변경하려는 경우 고급 사용자는이를 사용하여 제외 목록을 수정할 수 있습니다. 일반 사용자는이 세부 사항을 무시하고 배치 된 데이터에 대해 적절한 --read-batch 명령을 실행하는 쉬운 방법으로 쉘 스크립트를 사용할 수 있습니다.
rsync의 원래 배치 모드는 "rsync +"를 기반으로하지만 최신 버전은 새로운 구현을 사용합니다.
시도해 볼 수있을 것 같아
rsync --write-batch=foo -Pav /junk user@host1:/backup
foo.sh user@host2:/backup
foo.sh user@host3:/backup
remote destination is not allowed with --read-batch