rsync, find 및 대량의 데이터를 동기화하는 데 유용한 기타 명령

rsync, find 및 대량의 데이터를 동기화하는 데 유용한 기타 명령

제가 고려하고 싶은 폴더의 구조는 다음과 같습니다.

/mnt/network/

내 네트워크 드라이브야

/local/

내 로컬 폴더입니다. 내가 원하는 것은 이 두 폴더의 내용(약 350GB의 데이터를 나타냄)을 동기화하는 것입니다. 나는 두 가지 인기 있는 전략을 알고 있습니다.동기화그리고일관된. 것 같다Unison은 느릴 수 있습니다.데이터 양이 너무 많아서 rsync만 고려합니다.

이 두 폴더를 동기화하고 싶기 때문에 두 가지 명령을 실행합니다. /local/의 사본 1개:

rsync -avzut --progress --files-from=<(find . -mmin -1440 -type f) /local/. /mnt/network/

그리고 하나는 /mnt/network/에 있습니다:

rsync -avzut --progress --files-from=<(find . -mmin -1440 -type f) /mnt/network/. /local/

이 명령을 사용하여 rsync 실행을 지난 24시간(= 1440분) 내에 업데이트된 파일로 제한합니다.이 전략에 대해 두 가지 질문이 있습니다.

  1. 첫 번째 명령(/mnt/network/의 내용 업데이트)을 두 번 실행하면 최신 파일이두 번 복사됨: (a) 명령이 처음 실행될 때 - 이것이 내가 원하는 것입니다. 그리고 (b) 명령이 두 번째로 실행될 때입니다. 나는 (b)가 비정상적이라고 생각합니다. 왜냐하면 이 단계에서 /local/과 /mnt/network/의 파일이 동일하기 때문입니다(크기와 타임스탬프를 확인했습니다). 이것이 rsync와 find의 조합과 관련이 있을 수 있습니까? --size-only: / 옵션을 추가하는 것을 고려했지만 rsync -avzut --size-only --progress --files-from=<(find . -mmin -1440 -type f) /local/. /mnt/network이는 문제를 처리하는 안정적인 방법이 아닌 것 같습니다.

  2. 두 번째 문제는 find 명령이 /mnt/network/에서 실행되는 속도가 매우 느리다는 것입니다. 그래서 서버에 ssh로 연결하여 find 명령을 실행하고 해당 명령의 결과를 내 로컬 컴퓨터로 다시 전송하는 방법을 찾고 있습니다. 그런 다음 파일 전송을 수행합니다(서버가 내 로컬 디스크에 직접 액세스하는 것을 원하지 않기 때문에 서버에서 이 파일 전송을 주문할 수 없습니다). 어떻게 해야할지 전혀 모르겠습니다...

관련 정보