![파일 이름이 바뀌었는지 알 수 있나요?](https://linux55.com/image/89054/%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%B4%20%EB%B0%94%EB%80%8C%EC%97%88%EB%8A%94%EC%A7%80%20%EC%95%8C%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
파일 동기화를 위한 많은 도구는 홈 디렉터리 동기화에 적합하지 않습니다. 그래서 저는 루비를 배우기 위해 나만의 동기화 도구를 개발해왔습니다.
제가 겪고 있는 문제 중 하나는(제 동기화 도구에서 발생한 것 같습니다) 사용자가 파일 이름을 바꾸거나 파일을 삭제할 때 발생하는 것입니다. 첫 번째 경우(사용자가 이름을 바꾼 경우)를 생각해 보면 이것이 새 파일이 아니라 이름이 바뀐 파일인지 알 수 있는 방법이 있습니까? 어쩌면 내가 모르는 파일의 고유 ID일 수도 있습니다. 파일 설명자는 조사해 볼 만한 것처럼 들리지만, 다른 개념이라고 확신합니다.
답변1
파일 이름이 바뀌었는지 확인할 수 없습니다.
파일 이름이 변경되면 해당 파일은인덱스 노드숫자는 변경되지 않습니다. (이것은 네트워크 파일 시스템과 같은 "외부" 파일 시스템에서는 해당되지 않을 수 있지만 모든 "기본" Unix 파일 시스템에서는 해당됩니다.) 그러나 그 반대는 적용되지 않습니다. 동일한 inode 번호를 가진 새 파일이 생성되었습니다. 따라서 이전에 다른 파일과 동일한 inode 번호를 가진 파일이 표시된다고 해서 반드시 파일 이름이 변경된 것은 아닙니다.
inode 번호는 파일을 고유하게 식별합니다.존재할 때. 이는 하드 링크를 감지하는 데 적합하지만 이름 변경을 감지하는 데는 적합하지 않습니다.
파일 설명자는 특정 프로세스와 연관되어 있으며 여기서는 쓸모가 없습니다.
경험적 방법을 고려할 수 있습니다. 파일의 크기, 수정 시간 및 inode 번호는 이전과 동일하지만 이름이 다른 경우 이는 이름이 변경되었음을 의미합니다. 이 경험적 방법은 동일한 이름, 크기, 수정 시간 등 변경되지 않은 파일을 검색하는 동기화 도구의 수와 유사합니다.
트랙 파일 이름 바꾸기에 대해 내가 생각할 수 있는 모든 도구는 파일 내용을 기반으로 수행됩니다.조화이름이 바뀐 파일 감지하나 이상의 엔드포인트가 원격인 경우. 일부 최신 버전 제어 시스템(예: git)도 이름이 바뀐 파일을 감지합니다.
답변2
파일 설명자는 프로그램이 파일을 열 때 생성되며 프로그램이 파일을 다시 닫을 때까지만 유효합니다. 당신이 의심했을 수도 있듯이 : 다른 개념입니다.
파일 이름이 방금 바뀌었고 inode가 변경되지 않은 경우 이 방법을 사용할 수 있지만 이름 변경이 자주 발생하지 않는 한 그만한 가치가 있는지 의심됩니다.