inode 없이 디렉토리 항목(파일)을 삭제하는 방법은 무엇입니까?

inode 없이 디렉토리 항목(파일)을 삭제하는 방법은 무엇입니까?

이것은 제가 이해할 수 없는 이상한 일 중 하나임에 틀림없습니다. chromium때때로 브라우저를 사용 inode하면 Preferences.

터미널에서 이 작업을 수행하면:

$> ls -i ~/.config/chromium/Default/ | grep Preferences

이 출력을 수신합니다.

ls: cannot access '~/.config/chromium/Default/Preferences': No such file or directory
       ? Preferences
10551098 Secure Preferences

출력의 첫 번째 줄에는 파일이 존재하지 않는다고 표시되지만 두 번째 줄에는 여전히 디렉터리 항목으로 표시됩니다. 세 번째 줄은 grep 기본 설정에서도 해당 항목을 필터링하기 때문에 표시됩니다.

이제 제목에서 알 수 있듯이 질문은 주로 "이 디렉토리 항목을 삭제하는 방법"입니다.

추가 정보: os/distro 현재 Arch Linux, 파일 시스템: btrfs.

과거에 라이브 USB 썸 드라이브에서 부팅하고 btrfs check적절한 플래그를 사용하여 실행하여 문제를 발견하고 해결했습니다. 하지만 지금은 그런 드라이브가 준비되어 있지 않습니다. 그래서 제가 가장 관심을 갖는 것은 더 이상 연관된 inode가 없는 디렉토리 항목을 정리하는 다양한 방법입니다.

어쩌면 btrfs가 이것을 "온라인"으로 할 수 있을까요?

답변1

불행하게도 현재 BTRFS에서 이 작업을 수행하는 유일한 방법은 btrfs check. 개발자가 임의적으로 무엇을 하고 있는지 알지 못합니다).

그러나 USB 드라이브를 사용하여 오프라인으로 이 작업을 수행하는 것보다 더 정교한 대안이 있습니다.

  1. initramfs와 Systemd를 함께 사용하는 경우 실제 루트 파일 시스템을 마운트하고 셸에 넣기 전에 부팅 프로세스를 중지하도록 systemd에 지시할 수 있어야 합니다. 불행히도 저는 이 작업을 수행하는 방법을 기억하지 못합니다(저는 systemd를 사용하지 않기 때문에 실제로 생각해 본 적이 없습니다). 하지만 알아낼 수 있다면 이것이 아마도 가장 쉬운 옵션일 것입니다. (대부분) 완전한 시스템 복구 환경.
  2. Live USB 또는 Live CD 시스템의 로컬 복사본은 일반적으로 하드 드라이브에 설정할 수 있습니다. 이것이 제가 취한 접근 방식입니다.시스템 복구 디스크ISO를 복사하여 내 부팅 파티션에 넣습니다(제 경우에는 부트로더를 업데이트하기 위해 항목을 사용했지만 os-prober를 사용하면 자동으로 선택되어야 합니다). 정확한 파일 세트는 라이브 시스템마다 다르지만 SystemRescueCD의 경우 커널, initramfs 이미지, sysrcd.dat 및 sysrcd.md5 중 하나가 필요합니다.
  3. 최신 정보를 얻을 수 있는 시간과 인내심이 있다면 다음을 사용할 수 있습니다.루트 구축또는 유사한 도구를 사용하여 부트로더에서 직접 로드할 수 있고 시스템의 나머지 부분과 관계없이 RAM에서 완전히 실행할 수 있는 이미지를 어셈블할 수 있습니다. 그런 다음 원하는 복구 도구(예: btrfs-progs)를 번들로 묶어 이러한 작업을 수행해야 할 때마다 시작할 수 있습니다(이 방법은 가장 많은 노력이 필요하지만 옵션 2보다 공간을 덜 사용하고 옵션 2보다 낫습니다). 1 더 안정적입니다. )).
  4. 일부 배포판에서는 기본 파티션을 복구하는 데 필요한 내용이 포함된 백업 루트 파티션을 매우 쉽게 생성할 수 있습니다. 하지만 이는 정말 복잡하고 최신 상태를 유지하는 것이 가장 쉬운 일이 아닙니다. 그러나 Debian과 Gentoo는 이 작업을 매우 쉽게 만듭니다. (Debian은 초기 설정을 위한 도구가 있고 chroot에서 업데이트를 안정적으로 실행할 수 있습니다. Gentoo는 이러한 작업을 쉽게 수행하며 chroot를 업데이트할 필요도 없습니다. 루트 디렉터리로 사용)).

관련 정보