【学習点滴-linux】Linuxソフト接続とハードリンク


1.LinuxリンクコンセプトLinuxリンクは、ハードリンク(Hard Link)と呼ばれるものと、シンボルリンク(Symbolic Link)と呼ばれるものの2種類に分けられます.デフォルトでは、lnコマンドはハードリンクを生成します.
【ハード接続】ハード接続とは、インデックスノードを介して接続されることを意味します.Linuxのファイルシステムでは、ディスクパーティションに保存されているファイルには、インデックス・ノード番号(Index Index)と呼ばれる番号が割り当てられます.Linuxでは、複数のファイル名が同じインデックスノードを指して存在します.一般的にこの接続はハード接続です.ハード接続の役割は、1つのファイルに複数の有効なパス名を持つことを許可することです.これにより、ユーザーはハード接続を重要なファイルに確立し、「誤削除」の機能を防止することができます.この理由は、上記のように、当該ディレクトリのインデックスノードに1つ以上の接続があるためである.1つの接続のみを削除しても、インデックスノード自体と他の接続には影響しません.最後の接続が削除された場合にのみ、ファイルのデータ・ブロックとディレクトリの接続が解放されます.つまり、ファイルが本当に削除される条件は、それに関連するすべてのハード接続ファイルが削除されることです.
【ソフト接続】もう1つの接続をシンボル接続(Symbolic Link)と呼び、ソフト接続とも呼ばれる.ソフトリンクファイルにはWindowsのようなショートカットがあります.実際には特殊なファイルです.シンボル接続では、ファイルは実際には別のファイルの場所情報を含むテキストファイルです.
2.実験で理解を深める
[oracle@Linux]$ touch f1          #        f1
[oracle@Linux]$ ln f1 f2          #  f1        f2
[oracle@Linux]$ ln -s f1 f3       #  f1         f3
[oracle@Linux]$ ls -li            # -i       inode    
total 0
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

以上の結果から、ハード接続ファイルf 2は、元のファイルf 1のinodeノードと同じ97648であるが、シンボル接続ファイルのinodeノードが異なることがわかる.
[oracle@Linux]$ echo "I am f1 file" >>f1
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory

上記のテストから、元のファイルf 1を削除すると、ハード接続f 2は影響を受けませんが、シンボル接続f 1ファイルは無効であることがわかります.
3.まとめこれにより、いくつかの関連テストを行うことができ、以下のすべての結論を得ることができます:1).シンボル接続f 3を削除し、f 1,f 2に影響を及ぼさない.2).ハードコネクションf 2を削除し、f 1,f 3にも影響しない.3).元のファイルf 1を削除し、ハード接続f 2に影響を及ぼさず、シンボル接続f 3が失効する.4).同時に元のファイルf 1を削除し、f 2をハード接続すると、ファイル全体が本当に削除されます.
 
終わりだ!
ありがとう、Thanks!作者:iTech出典:http://itech.cnblogs.com/本文の著作権は作者iTechの所有に帰して、転載して作者の署名と出典を含んで、商業の用途に使用してはいけなくて、法律の責任を追及しなければなりません!