"vi" 편집기에서 편집할 때 inode 값이 변경되는 이유는 무엇입니까?

"vi" 편집기에서 편집할 때 inode 값이 변경되는 이유는 무엇입니까?

파일을 편집할 때vi편집기를 사용하면 파일의 inode 값이 변경됩니다. 그러나 cat명령으로 편집하면 inode 값이 변경되지 않습니다.

답변1

파일을 수정하려는 경우 두 가지 옵션이 있으며 각 옵션에는 장점과 단점이 있습니다.

  • 해당 위치에 파일을 덮어쓸 수 있습니다. 이는 추가 공간을 사용하지 않으며 기존 파일 내용 이외의 하드 링크, 권한 및 기타 속성을 보존합니다. 이 작업의 가장 큰 단점은 파일이 기록되는 동안 어떤 일이 발생하면(응용 프로그램이 충돌하거나 전원이 꺼지는 경우) 파일이 부분적으로 기록된다는 것입니다.
  • 파일의 새 버전을 다른 이름의 새 파일에 기록한 다음 해당 위치로 이동할 수 있습니다. 이는 더 많은 공간을 사용하고 하드 링크를 깨뜨립니다. 파일에 대한 쓰기 권한이 있지만 포함된 디렉터리에 대한 권한이 없으면 전혀 할 수 없습니다. 반면에 파일의 이전 버전은 새 버전으로 원자적으로 대체되므로 모든 시점에서 파일 이름은 파일의 유효하고 완전한 버전을 가리킵니다.

Vim이나 Emacs와 같은 고급 편집자는 두 가지 방법 중 하나를 선택할 수 있습니다. 첫 번째 방법을 사용할 경우 일반적으로 백업 파일을 먼저 생성하는데, 새 파일 내용을 올바르게 쓸 수 없는 경우 복구할 수 있습니다.

기존 vi는 해당 파일을 덮어씁니다. 따라서 inode는 변경되지 않습니다.

빔에서는CJM이 이미 밝혔듯이, 선택은 다음에 의해 제어됩니다.backup,backupcopy그리고writebackup옵션. 기본적으로 Vim은 이전 파일의 이름을 바꾼 다음 원본 파일의 속성을 다시 만들 수 있다고 판단되면 원래 이름으로 새 파일을 작성합니다. 기존 inode를 재사용하려면(따라서 데이터 손실 위험이 있거나 백업 복사본을 만드는 데 더 많은 시간을 낭비하게 됨 set backupcopy yes) .vimrc.

답변2

아마도 다음을 설정했을 것입니다.지원옵션을 켜고,백업 복사본"아니오" 또는 "breakhardlink"로 설정합니다.

관련 정보