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

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

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

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

답변1

파일 이름이 바뀌었는지 확인할 수 없습니다.

파일 이름이 변경되면 해당 파일은인덱스 노드숫자는 변경되지 않습니다. (이것은 네트워크 파일 시스템과 같은 "외부" 파일 시스템에서는 해당되지 않을 수 있지만 모든 "기본" Unix 파일 시스템에서는 해당됩니다.) 그러나 그 반대는 적용되지 않습니다. 동일한 inode 번호를 가진 새 파일이 생성되었습니다. 따라서 이전에 다른 파일과 동일한 inode 번호를 가진 파일이 표시된다고 해서 반드시 파일 이름이 변경된 것은 아닙니다.

inode 번호는 파일을 고유하게 식별합니다.존재할 때. 이는 하드 링크를 감지하는 데 적합하지만 이름 변경을 감지하는 데는 적합하지 않습니다.

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

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

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

나는 당신이 파일 동기화로 하고 싶은 일이 무엇이든 간에,동기화,조화그리고 버전 관리는 이미 존재합니다.

답변2

파일 설명자는 프로그램이 파일을 열 때 생성되며 프로그램이 파일을 다시 닫을 때까지만 유효합니다. 당신이 의심했을 수도 있듯이 : 다른 개념입니다.

파일 이름이 방금 바뀌었고 inode가 변경되지 않은 경우 이 방법을 사용할 수 있지만 이름 변경이 자주 발생하지 않는 한 그만한 가치가 있는지 의심됩니다.

관련 정보