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

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

내가 파일을 편집할 때vi편집기에서 파일의 inode 값이 변경됩니다. 그러나 cat명령을 사용하여 편집할 때 inode 값은 변경되지 않습니다.

답변1

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

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

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

Classic vi는 현재 위치에 있는 파일을 덮어씁니다. 따라서 inode는 변경되지 않았습니다.

빔에서는CJM이 이미 지적했듯이, 님이 선택함backup,backupcopy그리고writebackup옵션. 기본적으로 Vim은 원본 파일의 속성을 다시 만들 수 있다고 생각하면 이전 파일의 이름을 바꾼 다음 원래 이름을 사용하여 새 파일을 작성합니다. 기존 inode를 재사용하려는 경우(따라서 잠재적으로 데이터가 손실되거나 백업 복사본을 만드는 데 더 많은 시간을 낭비하게 되는 경우 set backupcopy yes) .vimrc.

답변2

아마도 이미 설정되어 있을 것입니다.지원옵션이 켜져 있고백업 복사본"아니요" 또는 "하드 링크 연결 끊기"로 설정합니다.

관련 정보