inodeなしでディレクトリエントリ(ファイル)を削除する方法は?

inodeなしでディレクトリエントリ(ファイル)を削除する方法は?

これは私が理解できない奇妙なことの1つであるに違いありません。chromium時々ブラウザを使用するinodePreferences

端末でこれを行うと:

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

この出力を受け取ります。

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

出力の最初の行にはファイルが存在しないと表示されますが、2番目の行にはまだディレクトリ項目として表示されます。 3行目は、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をアップデートする必要もありません。ルートディレクトリとして使用します)。

おすすめ記事