"vi"편집기에서 편집 할 때 왜 inode 값이 변경됩니까?


22

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

답변:


18

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


이 옵션을 제거하는 방법
monu

2
@monu,을 수정하십시오 ~/.vimrc. 기본 설정이 아닙니다.
CJM

@cjm VIM 7.4에서는 문자열 backup.vimrc없었지만 inode는 여전히 변경되었습니다. 기본값은 현재 파일백업 하고 나중에 삭제 하고 / * 가능하면 파일 이름을 / *를 백업 * /으로 바꾸고 쓰기 때문입니다. inode * /를 효과적으로 바꾸는 새로운 이름 / *와 같은 이름으로 . 에 추가 set backupcopy=yes하여 해결했습니다 .vimrc.
Kirill Bulygin

27

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

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

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

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

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


언급 +1 writebackup이미 꺼져 있기 때문에 backup하고 backupcopy있지만, 아이 노드는 여전히 변경되었다.
Alireza Mohamadi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.