Linuxでシンボリックリンク(Symlink)を作成する方法 – 実践ステップバイステップガイド
Windowsには「ショートカット」がありますが、Linuxにはそれに相当する機能として「シンボリックリンク(通称:Symlink)」が用意されています。では、シンボリックリンクとは一体何なのでしょうか?そして、どのように作成すればよいのでしょうか?この記事で詳しく解説します。
本記事のコマンドはUbuntu環境で動作確認していますが、構文はすべてのLinuxディストリビューションで共通です。ちなみに、macOSでも同様にシンボリックリンクを作成できます。
シンボリックリンクとは?
同じファイルを複数の場所からアクセスできるようにしたい場合、単純にコピーするのは良い解決策とは言えません。ディスク容量を無駄に消費するだけでなく、ファイルが複数存在することで変更履歴の管理も難しくなってしまいます。
GUIベースのOSでは、この問題を「ショートカット」の作成によって解決します。CUIベースのOS(Linuxディストリビューションなど)における答えが、シンボリックリンクです。実はMicrosoft Windowsでも、状況によってはシンボリックリンクを活用できます。
シンボリックリンクとは、別のファイルやディレクトリを指し示すだけのファイルのことです。リンク先は、まったく異なるファイルシステムやパーティション上にあっても構いません。シンボリックリンクを開けば元のファイルにアクセスでき、変更内容も元のファイルに反映されます。
これはパーミッションについても同様です。chmodコマンドでシンボリックリンクの権限を変更すると、実際にはリンク先のファイルの権限が変更されます。
シンボリックリンクの種類
シンボリックリンクは「ソフトリンク」とも呼ばれます。その名前が示すように、Linuxのファイルリンクシステムはこれだけではありません。特定のケースでは、ハードリンクをシンボリックリンクの代替として使用できますが、いくつかの制限が伴います。
まず、ハードリンクとは同じinodeを指すファイル名のことです。ストレージ効率やアクセス速度の面で非常に優れていますが、同一のファイルシステム・パーティション内のファイルにしか使用できないという制限があります。さらに、Linuxのフォルダアクセスの仕組み上の理由から、ディレクトリに対してハードリンクを作成することはできません。
一方、ソフトリンク(シンボリックリンク)は、デスクトップのショートカットに近い存在です。各ソフトリンクは、元のデータを指し示す小さなファイルであり、データ本体に直接リンクされているわけではありません。そのため、他のパーティションやファイルシステム上のファイルやディレクトリも、制限なく簡単に参照できます。
ハードリンク vs ソフトリンク – どちらを使うべき?
ソフトリンクは最も汎用性の高いリンク形式で、複数のファイルシステムにまたがるファイルやディレクトリにも制限なく使用できます。では、なぜハードリンクが存在するのでしょうか?シンボリックリンクより何か利点があるのでしょうか?
理論上は、ハードリンクの方が効率的です。同じinodeを使用するため、追加のディスク容量をほとんど消費せず、ソフトリンクよりも高速にアクセスできます。そのため、多くのシステム管理者は、可能な限りハードリンクを使うことを推奨しています。
とはいえ、シンボリックリンクを使うことのデメリットはごくわずかです。特に現代のコンピュータであれば、数キロバイトの追加ストレージなど気にする必要はありません。数百万個規模のソフトリンクを作成しない限り、ファイルサイズの増加はほとんど問題になりません。
シンボリックリンクの作成方法
シンボリックリンク(正確にはファイルリンク全般)は、lnコマンドで作成します。デフォルトではハードリンクが作成されるため、シンボリックリンクを作成するには「-s」オプションを付ける必要があります。
構文は非常にシンプルです。lnコマンドは2つの引数を取ります。1つ目はリンク先のファイル(またはフォルダ)のパス、2つ目は作成するリンクファイルのパスです。
以下のように入力します:
ln -s user_names.txt names
これで、user_namesテキストファイルに接続された「names」というシンボリックリンクが作成されます。シンボリックリンクが実際に作成されたかどうかを確認するには、lsコマンドを実行するだけです。
ご覧のとおり、Ubuntuではファイルの種類ごとに表示色が分かれており、ディレクトリは濃い青、シンボリックリンクは薄い青(実際にはシアン)で表示されます。
同じ構文で、フォルダへのシンボリックリンクも作成できます:
ln -s examples example_folder
他のディレクトリにあるファイルやフォルダへのシンボリックリンクを作成する場合は、フルパスを指定するだけです。例:
ln -s examples/example3.txt distant_example
シンボリックリンクの注意点・制限
シンボリックリンクは、コピーを作らずにシステム全体のファイルを連携させるのに便利な仕組みですが、独自の制限もあります。ソフトリンクはハードリンクより制約が少ないとはいえ、覚えておくべきポイントがいくつかあります。
まず、lnコマンドは作成されたリンクを検証しません。つまり、実際には存在しないファイル名を指定してもエラーは発生しません。リンクが正しく機能しているかを確認する唯一の方法は、実際にアクセスしてみて、正しいファイルにたどり着けるかチェックすることです。
次に、シンボリックリンクへのアクセスや権限変更は元のファイルの属性に影響しますが、削除についてはそうなりません。シンボリックリンク自体を削除しても、リンク先のファイルやディレクトリには一切影響しません。
まとめ:Linuxでのシンボリックリンク活用
ターミナルでシンボリックリンクを作成する際の最大の難点は、さまざまなディレクトリに散らばる重要なファイルへのアクセスが面倒なことです。賢い解決策は、ホームディレクトリからそれらのファイルへのシンボリックリンクを、デスクトップショートカットのように作成しておくことです。
また、ハードリンクと違い、シンボリックリンクは制限なしに簡単に作成でき、異なるパーティションやファイルシステム上のディレクトリやファイルとの接続も可能です。ただし、その反面、シンボリックリンクが存在しないファイルを指している可能性もあるため、リンク先のファイルが存在するかどうかは、実際にアクセスして確認する必要があります。
-
NFL公式モバイルアプリの使い方を徹底解説!基本操作からライブ配信まで
NFL公式モバイルアプリは、フットボールシーズンを最大限に楽しむために必要な機能がすべて詰まった公式アプリです。最新ニュース、リアルタイムのスコア速報、お気に入りチームのフォロー機能に加え、NFL NetworkやNFL Game Passによるライブストリーミングにも対応。ファンタジーフットボール向けツールや、場所を選ばずNFLのイベントにアクセスできる機能など、NFLファンならぜひチェックしておきたい一本です。 対応デバイス:iOS版はiOS 9.0以降が必要で、iPhone、iPad、iPod touch、Apple TVに対応しています。Android版はAndroid 5以降が
-
Steamの内蔵FPSカウンターを表示する方法|設定手順と理想のフレームレートを解説
PCゲーマーの間で意見が一致していることがひとつあるとすれば、それは「FPS(フレームレート)を把握することが重要だ」という点です。FPSはハードウェアの性能や最適化状況を測る指標となるだけでなく、対戦型シューティングゲームでは競争上の優位性をもたらすことさえあります。FPSを表示する方法は数多くありますが、中にはシステムに大きな負荷をかけ、かえってパフォーマンスを低下させてしまうものも少なくありません。幸い、Steamには内蔵のFPSカウンターが搭載されており、Steamゲームのプレイ中ならいつでも表示できます。この記事では、その設定方法と、知っておきたい理想のフレームレートについて詳しく解