파일 이름이 바뀌었는지 알 수 있나요?

파일 이름이 바뀌었는지 알 수 있나요?

파일 동기화를 위한 많은 도구는 홈 디렉터리 동기화에 적합하지 않습니다. 이 때문에 저는 Ruby를 배우기 위해 나만의 동기화 도구를 개발해 왔습니다.

내 동기화 도구에서 발생한 문제는 사용자가 파일 이름을 바꾸거나 파일을 삭제할 때 발생하는 문제입니다. 첫 번째 경우(사용자가 이름을 바꾸는 경우)만 생각해 보면 이것이 새 파일이 아니라 이름이 바뀐 파일임을 알 수 있는 방법이 있습니까? 어쩌면 내가 모르는 파일의 고유 ID일 수도 있습니다. 파일 설명자는 조사해볼 만한 것처럼 들리지만 나는 그것이 다른 개념이라고 확신합니다.

답변1

파일 이름이 바뀌었는지 확실히 알 수 있는 방법이 없습니다.

파일 이름이 변경되면 해당 파일은아이노드번호는 변하지 않습니다. (이것은 네트워크 파일 시스템과 같은 "이국적인" 파일 시스템에는 해당되지 않을 수 있지만 모든 "네이티브" Unix 파일 시스템에는 해당됩니다.) 그러나 반대의 경우는 해당되지 않습니다. 파일이 삭제되면 다음을 사용하여 새 파일이 생성될 수 있습니다. 동일한 inode 번호. 따라서 파일에 이전의 다른 파일과 동일한 inode 번호가 있다고 해서 반드시 파일 이름이 변경되었음을 의미하는 것은 아닙니다.

inode 번호는 파일을 고유하게 식별합니다.그것이 존재하는 동안. 따라서 하드 링크를 감지하는 데는 적합하지만 이름 변경을 감지하는 데는 적합하지 않습니다.

파일 설명자는 특정 프로세스와 연관되어 있으며 여기서는 쓸모가 없습니다.

파일의 크기, 수정 시간 및 inode 번호는 이전과 동일하지만 이름이 다른 경우 이름이 변경되었음을 의미한다는 경험적 방법을 고려할 수 있습니다. 이 경험적 방법은 변경되지 않은 파일(동일한 이름, 크기 및 수정 시간)을 검색하기 위해 많은 동기화 도구가 수행하는 것과 유사합니다.

트랙 파일 이름 바꾸기에 대해 내가 생각할 수 있는 모든 도구는 파일 내용을 기반으로 수행됩니다.조화이름이 바뀐 파일을 감지합니다엔드포인트 중 하나 이상이 원격인 경우. git과 같은 일부 최신 버전 제어 시스템도 이름이 바뀐 파일을 감지합니다.

나는 파일 동기화와 관련하여 당신이 원하는 것이 무엇이든간에재동기화,조화버전 관리는 이미 존재합니다.

답변2

파일 설명자는 프로그램이 파일을 열 때 프로그램에 대해 생성되며 프로그램이 해당 파일을 다시 닫을 때까지만 유효합니다. 그래서 당신이 의심했던 것처럼: 다른 개념입니다.

파일 이름이 방금 변경된 경우 inode는 변경되지 않으므로 이를 사용할 수 있지만 이름 변경이 자주 발생하지 않는 한 그만한 가치가 있는지 의심됩니다.

관련 정보