“vi”편집기에서 편집 할 때 왜 inode 값이 변경됩니까? 편집하면 파일의 inode 값이 변경됩니다. 그러나

“vi”편집기에서 파일을 편집하면 파일의 inode 값이 변경됩니다. 그러나 cat 명령으로 편집하면 inode 값이 변경되지 않습니다.



답변

백업 옵션을 설정 하고 backupcopy 를 “no”또는 “breakhardlink”로 설정했을 가능성이 큽니다 .


답변

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

  • 파일을 덮어 쓸 수 있습니다. 이것은 추가 공간을 사용하지 않으며 기존 파일의 내용 이외의 하드 링크, 권한 및 기타 속성을 보존합니다. 이 작업의 주요 단점은 파일을 쓰는 중 (애플리케이션이 충돌하거나 전원이 꺼지는) 어떤 일이 발생하면 부분적으로 작성된 파일로 끝나는 것입니다.
  • 새 버전의 파일을 다른 이름의 새 파일에 쓴 다음 제자리로 옮길 수 있습니다. 이것은 더 많은 공간을 사용하고 하드 링크를 끊습니다. 파일에 대한 쓰기 권한이 있지만 파일에 포함 된 디렉토리에 대해서는 쓰기 권한이 없으면 전혀 할 수 없습니다. 반대로 파일의 이전 버전은 원자 적으로 새 버전으로 바뀌므로 모든 시점에서 파일 이름이 유효하고 완전한 파일 버전을 가리 킵니다.

Vim 또는 Emacs와 같은 고급 편집기는 두 가지 방법 중에서 선택할 수 있습니다. 첫 번째 방법을 사용할 때는 일반적으로 백업 파일을 먼저 만들어 새 파일 내용을 올바르게 쓸 수없는 경우 복구 할 수 있습니다.

클래식 vi가 파일을 덮어 씁니다. 따라서 inode는 변경되지 않습니다.

빔에서 CJM가 이미 언급 한 것처럼 , 선택은에 의해 제어 backup, backupcopywritebackup옵션을 제공합니다. 기본적으로 Vim은 이전 파일의 이름을 바꾼 다음 원래 파일의 속성을 다시 만들 수 있다고 생각되면 원래 이름으로 새 파일을 씁니다. 기존 inode를 재사용하고 (따라서 데이터 손실 위험이 있거나 백업 사본을 만드는 데 더 많은 시간을 낭비 set backupcopy yes하려면 )을 추가 하십시오 .vimrc.


답변