Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxで壊れたシンボリックリンクを見つけて削除する方法

Linuxで壊れたシンボリックリンクを見つけて削除する方法

シンボリックリンク(symlink)は、Linuxシステムの管理を効率化するための便利な仕組みです。特にサーバーやワークステーションでは、あるディレクトリを別のディレクトリにリンクさせることで、設定ファイルを変更することなくアプリケーションのデータ保存先を別の場所へ振り向けることができ、システムを健全に維持するうえで欠かせないテクニックとなっています。

しかし、シンボリックリンクには一つ弱点があります。リンク先のディレクトリやファイルが必ずしも存在し続ける保証はないという点です。元ファイルが削除されると、リンクだけが取り残された「壊れたシンボリックリンク(dangling link)」となってしまいます。この記事では、Linuxで壊れたシンボリックリンクを見つけ出し、適切に削除する方法を解説します。

多くのディストリビューションのリポジトリには、その名もずばりsymlinksという非常に便利なユーティリティが用意されています。シンプルなコマンドラインツールであり、壊れたリンクをわかりやすい出力で確認できるほか、オプションを指定するだけでそれらをまとめて削除することも可能です。

インストールは以下のコマンドで行えます。

# Debian/Ubuntu系ディストリビューションの場合
sudo apt install symlinks
 
# Fedora/CentOS系の場合
sudo dnf install symlinks

symlinksコマンドで覚えておきたい主なオプションは2つあります。-dは壊れたリンク(dangling links)を削除するオプション、-rは指定した他のオプションの処理をサブディレクトリに対しても再帰的に実行するオプションです。

また、Linuxに標準搭載されているfindコマンドを使う方法もあります。こちらはやや上級者向けの出力になりますが、findコマンドの使い方を学ぶ良い練習にもなるので、合わせて覚えておくと役立ちます。

まず、実際にシンボリックリンクを作成して挙動を確認してみましょう。lnコマンドを使い、既存のファイルへのリンクを別名で作成します。

touch test-file.txt
ln -s test-file.txt linked-file.txt

lsコマンドを実行すると、リンクが作成されていることが確認できます。

Linuxで壊れたシンボリックリンクを見つけて削除する方法

次に、このシンボリックリンクを意図的に壊してみます。元ファイルを削除するだけです。

rm test-file.txt
Linuxで壊れたシンボリックリンクを見つけて削除する方法

ここで注目すべきは、元ファイルを削除した後でもls -lコマンドがリンクの存在を報告し続けるという点です。これが問題の発端となります。リンク元とリンク先が別々のディレクトリにある場合、元ファイルがまだ存在しているかどうかを目視で確認するのは非常に手間がかかります。

Linuxで壊れたシンボリックリンクを見つけて削除する方法

壊れたシンボリックリンクの「修復」は、基本的には削除によって行います。一度切れたリンクを元に戻すことはできないため、仮想ディレクトリツリーから掃除してしまうのが正しい対処法です。

symlinksツールで壊れたリンクを報告させるには、次のコマンドを実行します。

symlinks .

「.」は現在の作業ディレクトリを表しています。調べたいディレクトリに応じて適宜変更してください。出力は以下のようになります。

dangling: /home/jperkins/linked-file.txt -> test-file.txt

これは「linked-file.txt」がdangling(宙ぶらりん)状態、つまりシンボリックリンクが壊れていることを示しています。これらを削除するには、次のコマンドを使います。

symlinks -d .

出力内容は先ほどと似ていますが、今度は「deleted」という行が追加されます。

Linuxで壊れたシンボリックリンクを見つけて削除する方法

findコマンドで壊れたシンボリックリンクを検出する場合は、次のようにします。

find . -xtype l
Linuxで壊れたシンボリックリンクを見つけて削除する方法

ここでも「.」が現在の作業ディレクトリを意味します。出力はsymlinksコマンドほど親切ではありませんが、十分に有用です。

削除まで行うには、-deleteオプションを追加します。

find . -xtype l -delete
Linuxで壊れたシンボリックリンクを見つけて削除する方法

このコマンドは何も出力しませんが、-deleteオプションを外して再実行すれば、壊れたリンクが1件も見つからなくなっていることを確認できます。

以上で完了です。これで壊れたシンボリックリンクを簡単に見つけ出し、トラブルが起きる前にきれいに削除できるようになりました。シンボリックリンクに関するチュートリアルは他にも多数あるので、あわせてチェックしてみてください。また、シンボリックリンクとハードリンクの違いや、それぞれをどのような場面で使うべきかについて学んでおくのもおすすめです。

  1. LinuxにKodiをインストールする方法|Ubuntu・Debian・Fedora・Arch対応ガイド

    メディアストリーミングの分野で、Kodiに勝るプレイヤーは存在しません。映画やドラマのボックスセットコレクションからライブTVまで、あらゆるコンテンツを再生できます。初代Xbox向けアプリとして誕生した頃とは別物と言えるほど進化しました。クロスプラットフォーム対応のため、Linux PCへのインストールも難しくありません。一部のLinuxリポジトリにはKodiが標準で含まれていますが、すべてのディストリビューションでそうとは限りません。本記事では、主要なLinuxディストリビューションそれぞれにKodiをインストールする手順を詳しく解説します。UbuntuにKodiをインストールする最近のUb

  2. Arch Linuxのインストール方法を徹底解説!初心者向けステップバイステップガイド

    UbuntuやLinux Mintとは異なり、Arch Linuxは「ローリングリリース」方式を採用したLinuxディストリビューションです。一度インストールしてしまえば、常に最新バージョンへと自動的にアップデートされ続けます。また、Arch Linuxは必要最小限の構成から始まるディストリビューションのため、システムに何をインストールするかを完全に自分でコントロールできるのも大きな魅力です。さらに、Linuxコミュニティ屈指の充実度を誇る「Arch Wiki」が存在する点も見逃せません。ただし、Arch Linuxで注意すべき点はそのインストールプロセスです。決して心臓の弱い方向けではありま