-100p

-10p

+10p

+100p

Linuxでファイルやフォルダのリンク

Linuxでファイルやフォルダのショートカット。
シンボルリックリンクとハードリンクについて。

関連ページ 参考URL
例えばあるユーザーとしてサーバーにログインした直後は、Ubuntuの場合は/home/
 [ユーザー名] 
のホームディレクトリにログインする。
ここから毎回、操作したい機能の階層に降りるのは面倒。

こうした問題はLinuxのシンボリックリンクやハードリンクを作成することで解決ができる。

シンボリックリンク

Windowsのショートカット機能に近いのはこっちの方。

例えばログイン直後に、apacheの VirtualHost 設定のディレクトリに移動したいとする。
ここではユーザー名をsuneoとして、それぞれパスは下の通り。
 ログイン直後のパス 
: /home/suneo
 ApacheのVirtualHostのディレクトリパス 
: /etc/apache2/sites-available

ログイン直後の状態で、下のようなコードを打ってみる。
ln -s /etc/apache2/sites-available ./apache
するとホームディレクトリ内にapacheというファイルが出来る。
このapacheに対してcdを実行すれば、/etc/apache2/sites-availableにジャンプが出来る。

Windowsのショートカットと同様に、大元の/etc/apache2/sites-availableを削除した場合機能しなくなる。
その際は
 「No such file or directory」 
というエラーが出る。

ハードリンク

シンボリックリンクと違う所は色々あるが、まずディレクトリに対しては使えずファイルにしかリンクできない。
ディレクトリのハードリンクを作ろうとすると
 「hard link not allowed for directory」 
というエラーが出る。

なので今回はVirtualHostを実際に弄ってるファイルに対しリンクを作ってみる。
 ログイン直後のパス 
: /home/suneo
 ApacheのVirtualHostのファイルパス 
: /etc/apache2/sites-available/virtual.host.conf

コードは次の通り。ハードリンクの方は管理者権限が必要だったので、最初にsudoを付けている。
sudo ln /etc/apache2/sites-available/virtual.host.conf ./conf
シンボリックリンクとの違いは-sのオプションを消しただけ。

ハードリンクは不思議な挙動をしている。
まず大元のvirtual.host.confを削除しても、/home/suneo/confには変わらずアクセスできる。
またvirtual.host.confを削除せず、代わりに/home/suneo/confの方を削除した場合でも、virtual.host.confには何の影響もない。
どちらかを削除しない限りちゃんとリンクは保たれていて、片方のファイルを修正すればちゃんともう片方にも反映されている。

ハードリンクという語感から、自分はショートカットを削除することで大元のファイルも削除してしまうのではという危惧があった。
上述の通り、テストした所その心配はないみたいだった。
0
0

-100p

-10p

+10p

+100p