한 위치에서 하드 링크 된 파일을 변경하면 다른 위치에서 파일을 파괴하는 것 같습니다


0

folder1에 myfile.txt 파일이 있습니다. 터미널에서 나는이 명령으로 다른 디렉토리 에이 파일에 대한 하드 링크를 만듭니다

ln myfile.txt ~/Documents/folder2

새 파일이 folder2에 예상대로 나타납니다. ls -i를 사용하여 각 파일의 inode를 검사하면 예상대로 동일한 수를 제공합니다. 그러나 파일을 열고 folder1에서 수정하면 저장 후 folder2에서 파일을 열면 데이터가 없습니다. ls -i로 inode 번호를 조사하면 두 파일의 inode 번호가 다릅니다. 그래서 제 질문은 왜 이런 일이 발생합니까? 이것이 내가 기대하는 행동입니까? 내 이해는 하드 링크는 진정으로 구별 할 수없는 파일이며 동일한 데이터의 대체 이름 일 뿐이라는 것입니다. 따라서 한 위치에서 연 후 파일을 변경하면 다른 위치에서 파일을 열었을 때와 다르지 않을 것으로 예상됩니다. 아무도 여기서 무슨 일이 일어나고 있는지 설명 할 수 있습니까?

중요한 경우 Mavericks와 기본 terminal.app를 사용하고 있습니다.

몇 가지 추가 정보. TeXShop 또는 TextEdit으로 파일을 편집 할 때 설명 된 동작이 발생 했으므로 OS 수준의 파일이라고 생각했습니다. 그러나 Aquamacs로 파일을 편집 할 때 발생하지 않는 것 같습니다.

답변:


1

내 친구가 답을 찾았습니다. 분명히 OS X에는 writeToFile : atomically 함수가 있습니다.이 기능은 편집 한 파일의 사본을 만든 다음 저장시 원본 파일을 사본으로 대체합니다. 사본은 하드 디스크의 다른 위치에 존재하므로 다른 inode 번호를 갖습니다. 따라서 저장 후 열린 파일은 새 위치를 가리키고 원래 inode의 데이터가 제거됩니다. 이로 인해 파일의 다른 사본이 원래 inode 위치에서 아무것도 가리 키지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.