programing

두 폴더를 자동으로 동기화하는 방법

muds 2023. 5. 21. 12:04
반응형

두 폴더를 자동으로 동기화하는 방법

모든 하위 트리가 포함된 한 폴더의 동기화된 복사본을 원합니다.

원래 폴더에서 항목을 만들거나 수정 또는 삭제할 때마다 동기화 폴더에 변경 내용이 자동으로 적용됩니다.

이 작업에 대한 가장 좋은 접근 방식은 무엇입니까?

BTW: 저는 Ubuntu 12.04에 있습니다.

최종 목표는 심볼릭 링크나 마운트를 사용하지 않고 별도의 실시간 백업 복사본을 생성하는 것입니다.Ubuntu One을 사용하여 컴퓨터 간에 데이터를 동기화했는데 잠시 후 오류가 발생하여 동기화 중에 모든 데이터가 손실되었습니다.

따라서 데이터의 백업 복사본을 보관하기 위해 한 단계 더 추가해야겠다고 생각했습니다.

  • 데이터를 "A 폴더"에 저장합니다.
  • "폴더 A"와 "폴더 B"의 단방향 동기화를 만들기 위해 현재 질문에 대한 답변이 필요합니다(cron와의 대본.rsync그럴 수도 있죠?)저는 A에서 B로의 단방향으로만 필요하며, B의 변경사항은 A에 적용되지 않아야 합니다.
  • Ubuntu One과 동기화된 "B 폴더"만 유지합니다.

    이러한 방식으로 A의 모든 변경 사항이 U1에서 감지되어 클라우드에 동기화되는 B에 적용됩니다.만약 문제가 발생하여 U1이 B에 대한 데이터를 삭제하면, 저는 항상 A에 데이터를 저장합니다.

lanzz의 의견에 영감을 받아 시작할 때 rsync를 실행하여 Ubuntu One 아래의 폴더 내용을 백업하고 rsync가 완료된 후에만 Ubuntu One을 시작하는 것이 다른 아이디어일 수 있습니다.

어떻게 생각하세요?rsync가 언제 끝나는지 어떻게 압니까?

사용할 수 있습니다.inotifywait(와 함께)modify,create,delete,move플래그 사용) 및rsync.

while inotifywait -r -e modify,create,delete,move /directory; do
    rsync -avz /directory /target
done

없으면inotifywait시스템에서 실행sudo apt-get install inotify-tools

당신은 다음과 같은 것이 필요합니다: https://github.com/axkibe/lsyncd 이것은 rsync와 innotify를 결합한 도구입니다 - 전자는 올바른 옵션이 설정된 디렉토리를 마지막 비트로 미러링하는 도구입니다.후자는 커널에 디렉터리 ot 파일의 변경 사항을 프로그램에 알리도록 합니다.다음과 같이 표시됩니다.

몇 초 동안 이벤트를 집계하고 결합한 다음 하나 이상의 프로세스를 생성하여 변경 사항을 동기화합니다.

하지만 - https://www.digitalocean.com/community/tutorials/how-to-mirror-local-and-remote-directories-on-a-vps-with-lsyncd 의 Digital Ocean에 따르면 - Ubuntu 저장소에 있어야 합니다!

저도 비슷한 요구사항이 있는데, 아직 시도해보지 않은 이 도구가 작업에 적합해 보입니다.

@silgon 답변의 간단한 수정:

while true; do 
  inotifywait -r -e modify,create,delete /directory
  rsync -avz /directory /target
done

(@silgon 버전은 cron에서 실행하면 Ubuntu 16에서 충돌할 수 있습니다.)

크로스 플랫폼 사용 및rsync:

fswatch -o /src | xargs -n1 -I{} rsync -a /src /dest

Fchange를 이용할 수 있습니다.리눅스 파일 시스템 변경 알림입니다.소스 코드는 위 링크에서 다운로드할 수 있으며, 직접 컴파일할 수 있습니다. fschangeproc 파일에서 데이터를 읽어 파일 변경을 추적하는 데 사용할 수 있습니다(/sys/fschange).데이터를 파일에 쓸 때 fchange는 파일이 변경되었다고 말하는 대신 수정된 정확한 간격을 보고합니다.만약 당신이 더 발전된 해결책을 찾고 있다면 Resilio Connect를 확인하는 것을 제안합니다.교차 플랫폼이며, 사용 및 모니터링을 위한 확장된 옵션을 제공합니다.BitTorrent 기반이기 때문에 기존 동기화 도구보다 속도가 빠릅니다.그것은 그들을 대신해서 쓰여졌습니다.

저는 이 무료 프로그램을 사용하여 로컬 파일과 디렉토리를 동기화합니다. https://github.com/Fitus/Zaloha.sh저장소에는 간단한 데모도 포함되어 있습니다.

좋은 점:이것은 bash 셸 스크립트(파일 하나만)입니다.다른 프로그램처럼 블랙박스가 아닙니다.설명서도 거기에 있습니다.또한 일부 기술적 재능으로 "굽혀지고" 통합하여 원하는 최종 솔루션을 만들 수 있습니다.

언급URL : https://stackoverflow.com/questions/12460279/how-to-keep-two-folders-automatically-synchronized

반응형