업데이트가 플러그를 뽑은 이동식 드라이브에 대한 로컬 경로를 보존할 수 있습니까?

업데이트가 플러그를 뽑은 이동식 드라이브에 대한 로컬 경로를 보존할 수 있습니까?

나는 다음과 같이 updateb를 실행합니다.updatedb --localpaths="/a /b"

/a이동식 드라이브입니다. /b로컬 하드 드라이브입니다. 항상 액세스할 수 있는 것은 아니지만 특정 파일이 거기에 있는지 찾기 위해 /a실행하고 싶을 때가 많습니다 (마지막으로 실행한 시간을 기준으로 ).locateupdatedb

문제는 updatedb연결하지 않은 상태에서 실행하면 오류가 발생한다는 것입니다.

/usr/bin/find: '/a': No such file or directory

데이터베이스는 이에 대한 최신 정보를 가져오지만 기존 데이터를 /b삭제합니다 . /a연결하지 않았을 때 /a데이터를 유지하는 방법이 있습니까?/aupdatedb

나는 이것이 여러 데이터베이스에서 가능할 것이라고 생각합니다. 하나는 for /a이고 하나는 for입니다 /b. 그런 다음 스크립트는 /a삽입할지 여부를 결정할 때 삽입되었는지 확인할 수 있습니다 updatedb.

그러나 두 명령에 대한 매뉴얼 페이지에서는 내가 아는 것보다 더 많은 것을 알고 있다고 가정하므로(예: FINDOPTIONS수행할 작업) 이 문제에 대한 더 간단한 해결책이 있기를 바랍니다.

답변1

나는 Windows에서의 Linux나 GNU 버전을 모르지만 locate원하는 것을 할 수 있을 것입니다. 더 긴 버전의 설명서가 있습니다.여기.

단일 updatedb --localpaths="/a /b"명령을 2개의 명령으로 바꾸세요.

updatedb --localpaths="/b"
if [ -d "/a" ]; then updatedb --localpaths="/a" --output=/dir/mydb; fi

/dir/mydb데이터베이스가 저장될 파일의 ​​전체 경로 이름은 어디에 있습니까?

대상으로 지정할 때 환경 변수를 LOCATE_PATH로 설정하십시오 /dir/mydb::. 원칙적으로 ::이는 표준 데이터베이스를 사용하는 것을 의미해야 합니다.

그래도 ::작동하지 않으면 를 실행하여 표준 데이터베이스의 파일 이름을 얻을 수 있습니다 updatedb --help. 예를 들어 기본값이 이라고 표시되면 /usr/local/var/locatedb이를 설정할 수 있습니다 LOCATE_PATH=/dir/mydb:/usr/local/var/locatedb. 이 -d옵션을 사용하여 locate이 데이터베이스 목록을 제공 할 수도 있습니다 .

관련 정보