적절한 솔루션과 관련이 있다고 생각되는 몇 가지 배경은 다음과 같습니다.
수집용 폴더와 정렬용 폴더가 있는 서버가 있습니다. 정렬된 폴더의 소스는 수집 폴더이며 모든 디렉터리는 고유하며 모든 파일은 하드 링크입니다.
그 결과 파일이 수집 폴더에서 삭제되면 정렬된 폴더에 남아 있고 그 반대의 경우도 마찬가지입니다. 총 40TB에 달하는 수십만 개의 파일이 있기 때문에 정리가 거의 불가능합니다.
Inode 및 경로 이름이 포함된 모든 링크를 데이터베이스에 추가하는 스크립트가 있습니다. 그런 다음 일부 SQL을 사용하여 한 번만 발생하는 인덱스 노드를 찾아 삭제할지 여부를 결정할 수 있습니다.
이 솔루션은 매우 느리고(관리할 때마다 전체 데이터베이스를 새로 고쳐야 함) 다소 투박합니다(쿼리를 실행한 다음 CLI를 통해 수동으로 파일을 삭제해야 함).
inode를 표시하고 inode의 링크 수를 구체적으로 필터링할 수 있는 ncdu 또는 이중 창 파일 브라우저와 같은 솔루션이 있습니까(그림 참조 stat
)?
답변1
ls -li
두 디렉토리의 파일을 모두 작업하고 비교 하면 어떨까요 ?
답변2
이제 나는 find . -type f -links +1
여러 링크가 있는 모든 파일을 가져온 다음 이를 사용하여 sed
모든 링크를 절대 링크로 만든 다음 ncdu -X list.txt
나열된 파일 이외의 파일을 검색하는 데 익숙합니다.
이 솔루션은 여전히 느리고 더 나은 솔루션을 찾고 있지만 확실히 프로세스가 많이 개선되었으므로 답변으로 게시합니다.