rsync 없이 두 디렉터리 동기화

rsync 없이 두 디렉터리 동기화

지금 네가 무슨 생각을 하는지 알아"그냥 rsync를 사용하세요” 하지만 아쉽게도 이 시스템에는 rsync가 없으므로 다른 솔루션을 제안하고 싶습니다.

설정:

  1. 원본 서버에는 140,000개 이상의 파일이 포함된 업로드 폴더가 있습니다.(하위 디렉터리 없음)
  2. 대상 서버에는 140,000개 이상의 파일이 포함된 업로드 폴더가 필요합니다.

이를 스티커 메모만으로 마이그레이션이라고 부르겠습니다... 상황을 복잡하게 만들기 위해 서버 1은 새 업로드나 미리보기 이미지가 생성될 때마다 매일 새 파일을 계속 가져오므로 지금 이 점을 염두에 두셔야 합니다."1에서 2까지 파일을 복사하면 됩니다."20GB 이상의 복사본 작업이 완료되면 소스 서버에 이미 새 파일이 있기 때문에 다시 시작할 수 있기 때문에 작동하지 않습니다...

나의 솔루션 아이디어

  • 소스에서 대상으로 전체 폴더 복사
  • 대상 서버에서 가장 최근 생성 날짜를 찾아 원본 서버에서 시작점으로 사용
  • 마지막 생성 날짜 이후 소스에서 타겟으로 모든 파일 복사(증분)
  • 가능한 한 자주 이 작업을 수행하도록 크론을 설정하십시오.

내 질문

find /uploads/* -mtime -1 bash: /bin/find: Argument list too long

이제 bash 스크립트 루프 작성을 시작하기 전에 누군가 bash 스크립트 없이 이 작업을 수행할 수 있는 다른 방법, 즉 오래된 저수준 CLI를 제안할 수 있는지 궁금합니다.

답변1

해결책을 찾았지만 아직 해결책을 찾지 못했습니다. 아직 작업 중이에요.

파일 시스템 생성/수정 날짜를 신뢰할 수 있다고 가정하면 find를 사용하여 파일 목록을 생성하고 이를 텍스트 파일로 출력한 다음 루프를 사용하여 대상 서버를 scp할 수 있습니다. 조회 결과를 scp에 직접 제대로 보낼 수 없는 것 같습니다.

도우미 프로그램을 사용했어요SSH패스, 하지만 키 파일을 사용하는 것이 더 낫다는 것을 알고 있습니다.

대상 서버에서 원본 서버의 파일을 찾아 결과를 저장하고 결과를 하나의 디렉터리와 파일로만 제한합니다.

sshpass -p 'MyPassword' ssh [user@server] "find [path/to/look/in] -maxdepth 1 -mtime -1 -type f" > /tmp/last-24-hours-file-list.txt

출력 파일을 반복하고 각 파일에 대해 scp를 호출합니다.

while read filename; do sshpass -p 'MyPassword' scp -Crpv [user@server]:$filename [path/to/save/to]; done < /tmp/last-24-hours-file-list.txt

관련 정보