백업에서 파일 시스템 inode 번호는 언제 중요합니까?

백업에서 파일 시스템 inode 번호는 언제 중요합니까?

배경: 다소 겁쟁이이기 때문에 나는 지금까지 dd전체 파일 시스템을 백업용으로 가지고 있습니다. 주요 단점은 전체 백업에 메모리를 과도하게 사용한다는 점입니다(불행히도 여유 블록도 포함됨).

질문 지금은 파일 시스템 내부의 파일만 백업하고 싶지만 필요한 경우 파일 시스템을 다시 만들 수 있습니다. 데이터는 쉽게 추출할 수 있지만(예: 를 통해 rsync -a),
일부가 있는지 궁금합니다.사례나는 간과한다어디예를 들어파일에 할당된 inode 번호가 중요합니까?

/이는 특히 시스템이 있는 루트 파일 시스템을 백업하는 배경과 관련이 있습니다 . 나는 파일 시스템에 대해 그다지 걱정하지 않지만 루트 파일 시스템을 복원할 때 갑자기 inode가 변경되었을 /home/때 이상한 일이 일어날 수 있다고 기대할 만큼 상상력이 풍부합니까 ?/

좋은 대답에는 inode 번호가 중요하고 결국 문제를 일으킬 수 있는 가장 복잡한 사례 목록이 포함됩니다.

업데이트 일부 실험에서는 예를 들어 다음과 같은 사실이 밝혀졌습니다.하드 링크(당연히 동일한 inode를 참조함)에는 약간의 주의가 필요할 수 있습니다. 반드시 동일한 inode를 다시 할당해야 하는지 확실하지 않습니다.

운 좋게도 일반 우분투 12.04의 하드링크 수는 약 10개 파일에 불과합니다(그래서 스크립트로 기록하고 필요한 경우 복구할 수 있으며 rsync -ainode 번호는 신경 쓰지 않습니다).

제가 중요하다고 생각하는 한 가지 사례는 다음과 같습니다.세리눅스보안 모듈은 기본적으로 inode 번호를 사용합니다. 따라서 이것은 이미 하나의 사례이지만 아마도 다른 사례가 있을 수도 있습니다.

업데이트2 .rsync -aHmkfs.ext4 /dev/sdX -U oldfsUUID​본질적으로 모든 inode를 복원한 파일이 더 이상 원본 파일과 관련되지 않은 곳에서 가장 자주 사용되는 경우입니다. 운 좋게도 Ubuntu 12.04 설정 중 이 한 가지 경우에서는 inode가 중요하지 않은 것 같습니다. 나는 이것이 많은 것을 증명하지 못한다는 것을 알고 있습니다. 문제가 있는 사례 목록이 포함된 답변을 주시면 감사하겠습니다. 이미 언급한 내용이지만 selinux, 더 많은 내용이 있을 수 있으므로 아는 사람으로부터 좋은 답변을 얻을 수 있는 기회가 있을 것 같습니다.

답변1

Inode 번호는 일반 응용 프로그램에 중요하지 않습니다. 이는 부분적으로는 inode 번호를 거의 사용하지 않기 때문이고, 부분적으로는 애플리케이션이 inode 번호에 의존하는 경우 백업 및 복원 주기 후에 작동이 중지되기 때문입니다. 따라서 백업 시스템은 inode 번호를 복원하지 않으므로 애플리케이션은 이에 의존하지 않으므로 백업 시스템은 inode 번호를 복원할 필요가 없습니다.

백업에 대한 대부분의 접근 방식은 inode 번호를 복원할 수도 없습니다. 커널의 파일 시스템 드라이버는 파일을 생성할 때 사용 가능한 inode를 사용하므로 애플리케이션에서 이를 제한할 방법이 없습니다.

일부 파일 시스템에는 inode 번호조차 없습니다.

응용 프로그램에서 inode 번호를 사용하는 이유 중 하나는 두 경로가 동일한 파일을 지정하는지 테스트하는 것입니다. 특정 시점에서 장치 번호와 inode 번호를 비교합니다. 이를 위해 장치 번호와 inode 번호가 시간이 지나도 일정하게 유지될 필요는 없습니다. 백업 프로그램 자체에서는 하드 링크를 감지하기 위해 이 작업을 수행합니다.

inode 번호가 지정된 파일을 열거나 inode 번호가 지정된 경로로 파일을 가져올 수 있는 방법은 없습니다(기본 블록 장치에 액세스해야 하는 디버깅 도구 제외). 대부분의 파일 시스템에서 경로는 inode를 가리키지만 inode에는 파일이 포함된 디렉터리에 대한 포인터가 포함되어 있지 않으므로 전체 파일 시스템을 순회하지 않고는 구현할 수 없습니다. 게다가 파일이 삭제될 수도 있습니다(하드 링크 수가 0이고 내용이 삭제되고 inode가 해제되기 전에 닫힐 때까지 기다릴 수 있음).

SELinux는 inode 번호가 아닌 inode를 사용하여 컨텍스트를 추적합니다. SELinux 컨텍스트는 다른 모든 것과 마찬가지로 경로를 사용하여 저장됩니다.

rsync -AHX백업을 만드는 안전하고 일반적인 방법입니다.

inode 번호를 사용하는 하나의 애플리케이션을 생각해 볼 수 있습니다.도적는 오늘날에도 여전히 사용되는 Curses 라이브러리에 동기를 부여한 최초의 전체 화면 터미널 기반 게임 중 하나입니다. 저장 파일을 무단으로 복사하는 것을 방지하기 위해 저장 파일에 inode 번호를 저장합니다. 나는 "심각한" 응용 프로그램에서 이러한 작업이 수행되는 것을 본 적이 없습니다.

관련 정보