inode 값만 사용해서 해당 inode의 파일명을 알아낼수 있는 방법이 있나요?
글쓴이: superkkt / 작성시간: 금, 2006/09/29 - 12:03오후
안녕하세요.
현재 개발중인 프로그램에서 tar 포멧으로 파일을 아카이빙해야할 필요가 있어서 tar 라이브러리를 이것저것 알아보고 있습니다. 그중에 libtar(http://www.feep.net/libtar/)가 괜찮은것 같아서 적용을 이미 시켰는데요.. 테스트 과정에서 대량의 파일을 아카이빙하면 엄청나게 많은 메모리를 잡아먹는것을 발견했습니다.
그래서 코드를 확인해 봤더니 모든 파일에 대해 device 정보와 inode 정보를 링크드 리스트로 생성하고, 아카이빙 대상 파일이 하드링크일 경우 링크드 리스트를 뒤져서 파일이름을 가져오는 루틴이 있었습니다.
device 정보와 inode 값만 알고 있는 상태에서 해당 파일명을 알아낼 수 있는 방법이 있다면 굳이 모든 파일에 대한 리스트를 유지할 필요가 없을것 같은데요.. 이런 방법이 있는지 모르겠네요.
조언 부탁드립니다~
Forums:
inode로 파일명을 알아내는 역참조는 없을거 같은데요.
정확하지는 않습니다만.. 예전 internal 책에서 본 기억으로는 디렉토리 목록에서 해당 파일의 첫번째 inode 값을
가지고 있는걸로만 알고 있습니다. inode에 해당하는 파일을 찾기 위해 디렉토리를 뒤져봐야 할겁니다.
inode 값을 가지고 그 블럭에 가서 해당 파일을 읽어 오고 거기서 그 파일명을 가리키는 구조는 아니였던거
같군요.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
libtar의 경우에는
libtar의 경우에는 모든 파일을 헤쉬리스트에 등록하도록 되어있어서 메모리 사용률이 높지만 GNU tar는 link count가 1보다 큰 경우에만 헤쉬리스트에 등록을 하도록 되어있더군요. 그래서 GNU tar처럼 libtar 소스코드를 약간 수정해서 메모리를 엄청 잡아먹는 문제는 해결했습니다.
그런데 libtar가 만들어진지도 꽤 오래 되었고 많이 사용되는걸로 보이는데 그동안 저런 문제가 이슈가 되지 않았다는건 꼭 필요해서 그렇게 한것이 아닐까 싶기도하고.. 아무튼 수정한 코드로 계속 테스트를 해봐야겠습니다. 마음같아서는 변경된 코드와 질문사항을 라이브러리 개발자에게 메일로 보내고 싶지만 영어의 압박때문에..
======================
BLOG : http://superkkt.com
======================
BLOG : http://superkkt.com
댓글 달기