2014-03-04 6 views
2

Google은 파일 동기화를 위해 회사 노드와 저장소 노드를 보유하고 있습니다. 각 저장소 노드의 파일을 회사 노드에 동기화합니다. 소스 디렉토리는 상점마다 다 (니다.Symmetricds는 파일 동기화를위한 소스 기본 디렉토리를 동적으로 변경합니다.

빈 셸 스크립트 또는 임의의 확장자를 사용하여 파일 트리거 동적의 기본 디렉토리를 변경할 수 있습니까? 즉 파일 트리거의 소스 기본 디렉토리가 다른 상점에서 다를 수 있습니다.

답변

1

소스 기본 디렉토리는 노드 그룹에 지정됩니다. 원본 설정이기 때문에 대상 설정이 변경 될 수 없습니다.

는 두 가지 가능한 솔루션 ...

  1. 각 클라이언트에 대해 별도의 노드 그룹을 만들고 있습니다. 동일한 기본 디렉토리를 공유하는 클라이언트는 분명히 동일한 노드 그룹을 공유 할 수 있습니다.
  2. 변환을 사용하여 클라이언트에 전송 된 구성을 수정할 수 있습니다. 이것은 해킹이기 때문에 위험을 무릅 쓰고 시도하십시오. sym_file_trigger 테이블에서 BSH 또는 조회 변환을 작성합니다. 클라이언트 노드 ID를 사용하여 테이블에서 기본 디렉토리를 찾을 수 있습니다. 필자는 SymmetricDS의 다른 부분에도이 방법을 사용했지만 파일 동기화는하지 않았습니다.

이것은 일반적인 상황처럼 보입니다. 3.6 릴리스의 일부로 기능 요청을 만들었습니다. 우리는 앞으로 몇 개월 안에보다 깨끗한 솔루션을 제공해야합니다. 당신은 주어진 솔루션이 여기에 문제가 ...

http://www.symmetricds.org/issues/view.php?id=1623

+0

을 추적 할 수 sym_file_trigger 테이블에 대한 정의 트리거 및 trigger_router 행을 작성이 필요하다? –

+1

예, 공용 파일 트리거를 1 개 만들고 해당 파일 트리거를 라우터에 연결해야합니다. 변환에서 라우터가 사용하는 것과 동일한 그룹 링크를 사용하는지 확인하십시오. 사용자 정의 트리거가 무슨 뜻인지 모르겠습니다. 각 클라이언트마다 변형되는 트리거 하나만 있으면됩니다. –

+0

감사. 하나의 도움이 필요합니다. bsh를 사용하여 sym._transform_column의 code.getSqlTemplate(). queryForString ("my select query") 코드를 사용하여 데이터베이스를 쿼리 할 때 다음과 같은 오류가 발생합니다. 메소드를 확인하려고 시도합니다. getSqlTemplate() 정의되지 않은 변수 또는 클래스 이름 : engine : 행 : 2 : 파일 : 인라인 평가 : transform_1820655272() return engine.getSqlTemplate(). queryForString ("select i ...." ' –