Linux Machine 1 - Directory1(모든 하위 디렉터리 및 파일 포함)이 있습니다. Linux SFTP Machine 2 - Directory2(모든 하위 디렉터리 및 파일 포함)가 있습니다.
SFTP만을 사용하여 두 디렉터리를 완전히 동기화 상태로 유지할 수 있는 솔루션/도구를 찾고 있습니다. 한 쪽에서 파일/폴더가 추가/수정/삭제되면 다른 쪽에도 복사해야 합니다.
사용할 수 없는 솔루션: rsync - ssh 연결이 필요합니다(보안 문제로 인해 불가능) 시도한 솔루션 - lftp -> 단일 시스템만 동기화하기 위해 파일/폴더를 쓰거나 수정하는 경우 단일 시스템이 원활하게 작동합니다. 그러나 머신 1/머신 2가 쓰고 수정/삭제하는 경우 lftp는 불안정하게 작동합니다. Apache Nifi를 시도했지만 이는 과잉이므로 더 간단한 솔루션을 찾는 것이 가능합니다.
도와주셔서 감사합니다!
답변1
find . -type f | sort > files-src.txt
관련된 디렉토리1 파일 이름 목록을 생성하려면 machine1에서 명령을 사용하십시오 . 파일 길이와 sha224 파일 콘텐츠 해시를 이 파일 또는 관련 파일에 넣습니다. find의 편의 -ls
스위치를 사용해 보세요.
"files-src.txt"는 machine2의 Directory2로 전송됩니다.
로컬 파일 읽기 전용을 기반으로 machine2에서 로컬 "files-dst.txt" 파일을 생성합니다.
rsync
이제 온라인 컨텍스트에서 수행하는 작업 과 유사하게 {src, dst}.txt 파일 간의 차이를 계산할 수 있습니다 . src에 나타나지 않는 dst 파일을 삭제하는 것은 매우 쉽습니다. 다음으로, src 파일과 일치하는 (길이, 해시) dst 파일을 무시합니다. (해시는 길이가 일치하는 경우에만 일치합니다.) 마지막으로 다음 중 하나에 해당하는 모든 src 파일의 전송을 예약합니다.
- 해당 dst 파일이 없거나
- 일치하지 않는 해시가 포함된 dst 파일이 있습니다.