리눅스에서 파일 태깅을위한 좋은 해결책은 무엇입니까? [닫은] 일치하는 파일을 검색 할

파일에 태그를 지정하고 해당 태그를 기반으로 파일을 검색 / 필터링하는 방법을 찾고있었습니다.

내 ( 업데이트 된 ) 요구 사항 은 다음과 같습니다 .

  • 사용자가 읽을 수있는 모든 파일에 자유롭게 태그를 지정할 수 있습니다
  • 사용자는 하나 또는 여러 개의 태그와 일치하는 파일을 검색 할 수 있습니다
  • 이전에 연결된 태그를 잃지 않고 파일을 이동할 수 있습니다
  • 시스템을 쉽게 백업 할 수 있습니다
  • 데스크탑 환경에 대한 의존성이 없음
  • 어떤 GUI가 관련되어 있다면 cli fallback이 있어야합니다.

나는 이것을 처리하기 위해 기본 파일 시스템 및 coreutils 해커가 있기를 바랐지만 아직 충분히 열심히 생각하지 못했습니다.
한편 나는 여기에 언급 된 비글과 메타 트래커를 검토하고 이들이 어떻게 작동하는지 살펴 보겠습니다.


비글에는 큰 그놈 의존성이 있고 추적기는 괜찮지 만 여전히 좋아하지 않는 의존성이 있습니다 …

더 많은 연구를 해왔으며 진행 방법은 확장 된 파일 속성 일 수 있습니다.
그것은 가장 최근의 파일 시스템에 대한 기본 솔루션이지만 아직 잘 지원되지는 않습니다 (대부분의 coreutils는 기본적으로 파일을 파괴합니다. 예를 들어 cp는 파일을 보존하려면 -a 플래그가 필요합니다). 새로운 질문이 필요할 수도 있지만 해킹을 직접 시도하는 동안 사용에 대한 의견을 듣고 싶습니다.



답변

어떤 종류의 검색을 원하는지 명확하지 않습니다. 홈 디렉토리가 아닌 유닉스의 어느 곳에서나 작동하고 경로 이름 기반 검색 만 수행하려는 경우 약간의 쉘 해커를 사용하고 표준을 사용하여 다음 구성표를 사용할 수 있습니다 locatedb.

  1. 태그가 지정된 파일을 하나 이상 포함하는 각 디렉토리에는 표준 하위 디렉토리가 필요합니다 .path-tags.
  2. $ TAG 링크 (char 포함하지 않아야 함 _)가있는 $ FILE 디렉토리의 각 파일에는 링크가 있습니다.$TAG_$FILE -> ../$FILE

나는 locate-tag대본 의 세부 사항 을 당신에게 맡깁니다. locate명령 및 셸 해커 만 사용하는 2 개 또는 3 개의 라이너 여야합니다 . (관심이 있으시면 하나 쓸 수 있습니다).

KDE 챕터 중 일부는 메타 데이터에 대한 이러한 종류의 체계에 대해 이야기했지만 세부 사항은 기억 나지 않습니다.

이 체계를 기반으로 유사한 스크립트를 사용하여보다 정교한 컨텐츠 검사 테스트를 수행 할 수도 있습니다 find.

업데이트 된 요구 사항에 대한 생각

  1. 사용자가 읽을 수있는 모든 파일에 자유롭게 태그를 지정할 수 있습니다 -예, 문제 없습니다
  2. 사용자는 하나 이상의 태그와 일치하는 파일을 검색 할 수 있습니다 -마찬가지로
  3. 이전에 연결된 태그를 잃지 않고 파일을 이동할 수 있습니다. 파일이있는 디렉토리는 자유롭게 이동할 수 있지만 파일이 디렉토리에서 이동하면 문제가 발생합니다. 태그가 양식을했다 경우 $TAG_$INODE_$FILE우리는이 경로가 주어진 아이 노드를 찾을 수있는 효율적인 방법을 , 우리는 우리가 파일 시스템에서 이동하는 경우에만 태그를 잃고,이 작업을 수행 할 수 있습니다. 파일을 복사하면 문제가 발생할 수 있으며 원래 제안보다 훨씬 더 복잡합니다.
  4. 시스템을 쉽게 백업 할 수 있습니다 . 본질적으로 어렵지는 않습니다.
  5. 데스크탑 환경에 대한 종속성 없음-없음
  6. 어떤 GUI가 관련되어 있다면, cli fallback이 있어야합니다 – 그것이 우리가 사는 곳입니다!

Postscript
링크 (2)에 설명 된 “reverse-inode-lookup”파일은 (1) 에 대한 답변에서 나에게 보여준 추가 인프라를 제공하는 데 사용될 수 있습니다. 역방향 조회 파일에서 서비스를 실행할 수 있습니다.이 파일은 태그의 파일 이름에 지정된 각 inode가 태그가 가리키는 파일 (있는 경우)의 inode와 일치하는지 확인합니다. 일치하는 것이 없으면 필요한 수술을 수행 할 수 있으며 (아이 노드가 여전히 존재합니까? 어디에 있습니까?) 역방향 조회 파일이 변경되거나 재생성되고 태그 심볼릭 링크가 업데이트됩니다.

까다로운 한 가지 사례가 있습니다. 태그 된 파일이 태그가 말한 곳에 없으면 역방향 조회 파일이 여전히 존재한다고 말하지만 탕자 파일이 조회 파일의 위치가 아니라는 것입니다. 데이트? 이 경우를 처리 할 수있는 몇 가지 방법이 있지만 이상적인 것은 아닙니다. 이 외에도이 모든 작업은 Perl이 잘 어울리는 것 같습니다 …


답변

방금이 기능을 제공하려는 새 프로그램의 알파를 출시했습니다. 현재 귀하의 요구 사항 중 일부만 충족합니다. 어쨌든 관심이있을 수 있습니다. 태그 지정을위한 명령 줄 도구와 탐색을위한 가상 파일 시스템 (태그가 디렉토리로 표시됨)을 제공합니다.

http://www.tmsu.org/

사용자가 읽을 수있는 모든 파일에 자유롭게 태그를 지정할 수 있습니다

예.

사용자는 하나 또는 여러 개의 태그와 일치하는 파일을 검색 할 수 있습니다

예. 명령 행 도구를 통해 또는 가상 파일 시스템에서 태그 디렉토리를 찾아보십시오.

이전에 연결된 태그를 잃지 않고 파일을 이동할 수 있습니다

그러나 응용 프로그램은 이동 된 파일을 식별하는 데 사용되는 태그가 지정된 파일의 지문을 저장합니다. 이동 된 파일의 경로를 업데이트하는 ‘복구’명령이 제공됩니다. 파일이 이동되고 수정되면이 메커니즘이 작동하지 않습니다.

시스템을 쉽게 백업 할 수 있습니다

예. 간단한 Sqlite 3 데이터베이스 파일입니다.

데스크탑 환경에 대한 의존성이 없음

예. 종속성이 없으며 가상 파일 시스템으로 실행할 수 있으므로 기호 링크를 지원하는 모든 프로그램에서 파일 시스템으로 사용할 수 있습니다.

어떤 GUI가 관련되어 있다면 cli fallback이 있어야합니다.

현재 GUI가 없습니다.


답변

이것이 모든 요구 사항을 충족시킬 있다고 생각합니다 . 어쨌든 멋진 코드입니다.

http://pages.stern.nyu.edu/~marriaga/software/oyepa

GUI에는 Qt가 필요하지만 검색을위한 명령 줄 응용 프로그램이 있으며 모든 태그가 실제로 파일 이름에 있다는 사실은 cli에서 태그 | 파일을 조작하는 것이 쉽지 않습니다.


답변

아무도 언급하지 않았지만 확장 파일 시스템 속성을 반드시 확인해야합니다. 예를 들어 ext4에 있습니다. getfattr과 setfattr을 다루는 도구가 있습니다. 물론 일부 태그가 지정된 파일을 검색하려면 일부 쉘 스크립트를 작성해야합니다. 언급 된 질문과 관련하여 모든 대답은 “예”입니다. 파일 시스템에 의존한다는 점만 고려해야합니다.


답변

아무도 TagSpaces 를 언급하지 않은 것으로 놀랐습니다 . 태그는 파일 이름에 저장되고 TagSpaces는 크로스 플랫폼이기 때문에 모든 요구 사항을 충족합니다.


답변

태그 라이브러리 인 Nepomuk를 위해 KDE 데스크탑 전체를 설치할 필요는 없습니다. 그래도 KDE 기본 라이브러리를 설치해야합니다.


답변

Linux 데스크톱 검색 도구 에 대한이 최신 기사에서는 트래커 가 태그 지정을 지원 한다고 언급합니다 . 불행히도 테스트 한 이전 버전에서는 절반으로 떨어졌습니다. 아마 지금 고쳐 졌나요?

  1. 시스템 전체가 아닙니다.
  2. 백업 할 수 있습니다.
  3. 그놈과 함께 제공됩니다.