나는 inotify를 사용하여 디렉토리의 변경 사항을 모니터링하고 rclone을 사용하여 백업 스크립트를 시작하기 시작했습니다. 그래서 저는 데비안에서 Recoll을 사용하고 있다는 점을 활용하여 inotify가 작동하지 않고도 Recoll이 감지한 변경 사항으로 rclone을 시작할 수 있다고 생각했습니다.
인덱스가 업데이트될 때마다 마지막으로 수정되거나 생성된 파일을 알려주는 명확한 로그 파일을 Recoll에서 찾을 수 없습니다. 나는 노력해왔다회상_상태스크립트를 사용하거나 xapian-delve를 사용하여 xapiandb를 읽으려고 시도했지만 성공하지 못했습니다.
Recoll 색인에서 마지막으로 추가되거나 업데이트된 문서 목록을 얻는 방법에 대해 알고 계시나요?
답변1
파일 변경 사항 확인을 사용하는 것은 recollindex
흥미로운 아이디어이지만 사용 사례를 이해하는 경우에는 필요하지 않습니다. Rclone은 이미 파일 크기와 수정 시간을 살펴보고 무엇을 업데이트할지 결정합니다.
일반적으로 rclone은 파일의 수정 시간과 크기를 확인하여 동일한지 확인합니다. 이 플래그가 설정되면 rclone은 파일 해시와 크기를 확인하여 파일이 동일한지 확인합니다.
이것은 본질적으로 같은 것입니다 recollindex
.
파일이 수정되었는지 테스트하려면 ctime 대신 mtime을 사용하세요. 항상 사용되는 크기 외에 시간도 사용됩니다.
자세한 내용은 여기에서 소스 코드를 참조하세요.
// File signature and up to date check. The sig is based on
// m/ctime and size and the possibly new value is checked against
// the stored one.
따라서 rclone
본질적으로 동일한 비교를 수행하여 인덱스를 업데이트하는 대신 원격 백업 recollindex
만 업데이트합니다 . 현재 실행하는 것과 동일한 방식으로 실행할 rclone
수 있습니다 .rclone
recollindex
또한, recoll의 인덱스를 사용하여 백업해야 할 항목을 결정하는 데에는 다음과 같은 많은 단점이 있습니다.
skippedNames
Recollindex는 의 항목 에 따라~/.recoll/recoll.conf
많은 파일(예: PNG 및 JPEG 파일) 색인 생성을 건너뜁니다 . 아마도 이러한 파일을 백업하고 싶을 것입니다.이 인덱스는 파일 시스템의 현재 상태를 반영하지 않습니다. 실제로 파일 시스템은
recollindex
런타임 시 변경될 수 있습니다. 따라서 인덱스는 업데이트해야 할 항목을 결정하는 신뢰할 수 있는 방법으로 사용할 수 없습니다.
그런데 실시간 모니터링 모드에서 시작하면 recoll은 사용 중인 변경 사항을 감지하기 위해 특별한 작업을 수행하지 않습니다.Inotify 또는 FAM/GAMIN 무대 뒤에서. 궁금하신 경우 소스 코드의 관련 부분에 대한 링크는 다음과 같습니다.
스크립트 recoll_status.py
는 폴링만 수행합니다 ~/.recoll/idxstatus.txt
. 여기에는 변경된 파일의 전체 목록도 포함되지 않습니다. 현재 색인화되고 있는 파일만 표시되며 모든 파일이 아닌 가끔 업데이트됩니다.
// Update the status file. Avoid doing it too often. Always do
// it at the end (status DONE)