
배경:
제가 좀 소심한 성격이라 dd
지금까지 전체 파일 시스템을 백업해 두었습니다. 가장 큰 단점은 이러한 전체 백업이 메모리를 과도하게 사용한다는 것입니다(불행히도 사용 가능한 블록도 있음).
질문
이제 파일 시스템 내의 파일만 백업하고 필요한 경우 파일 시스템을 다시 만들 수 있습니다. 데이터는 쉽게 추출할 수 있지만(예: 를 통해 rsync -a
)
일부 오류가 있는지 알고 싶습니다.사례나는 무시한다어디예를 들어파일에 할당된 inode 번호가 중요합니까?
특히 /
루트 파일 시스템과 그 위의 시스템을 백업하는 맥락에서 그렇습니다. /home/
파일 시스템 에 대해서는 별로 걱정하지 않지만 /
루트 파일 시스템이 복원되고 inode가 갑자기 변경되면 이상한 일이 발생할 수 있다고 예상할 만큼 상상력이 풍부합니다.
좋은 답변에는 inode 번호가 중요하고 궁극적으로 문제를 일으킬 수 있는 상황의 가장 완전한 목록이 포함되어야 합니다.
고쳐 쓰다 일부 실험에서는 다음과 같은 사실을 보여줍니다.하드 링크(자연스럽게 동일한 인덱스 노드를 참조하는 경우) 약간의 주의가 필요할 수 있습니다. 동일한 inode를 재할당해야 하는지 확실하지 않습니다.
운 좋게도 우분투 12.04의 하드 링크 수는 약 10개 파일에 불과합니다(그래서 스크립트를 통해 기록하고 필요한 경우 수정할 수 있으며 rsync -a
inode 번호는 신경 쓰지 않습니다).
예 제가 중요하다고 생각하는 사례 중 하나는SELinux보안 모듈은 기본적으로 inode 번호를 사용합니다. 이것은 이미 하나의 사례이지만 어쩌면 다른 사례도 있을 수 있습니다.
업데이트 2
방금 rsync -aH
. mkfs.ext4 /dev/sdX -U oldfsUUID
다행히도 Ubuntu 12.04 설정에서는 inode가 중요하지 않은 것 같습니다. 나는 이것이 아무것도 증명하지 못한다는 것을 안다. 여전히 문제 사례 목록이 포함된 답변을 원합니다. 이미 말씀드렸지만 selinux
이 외에도 더 있을 것 같아서 아시는 분께서 좋은 답변을 주실 가능성이 높습니다.
답변1
inode 번호는 일반 응용 프로그램에서는 중요하지 않습니다. 부분적으로는 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 번호를 저장합니다. 나는 "심각한" 응용 프로그램에서 이 작업이 수행되는 것을 본 적이 없습니다.