LinuxServer ファイル管理について ファイルのリンク、圧縮、伸長、アーカイブ

この記事は2012年11月20日に書かれたものです。内容が古い可能性がありますのでご注意ください。


LinuxServer ファイル管理について ファイルのリンク、圧縮、伸長、アーカイブ

ファイルのリンク

Linuxでは、ファイルやディレクトリを作成すると、ユニークなiノード番号が割り当てられます。

iノードとは、ファイルにまつわる属性情報が格納されており、ディレクトリも特殊なファイルとして扱われる為、
iノード情報を持ちます。

このファイル実体に別名を設定し、アクセスを可能にするのが、リンクという仕組みであり、ハードリンクとシンボリックリンクの2種類があります。

  • ハードリンク
  • ハードリンクとは、ファイルの実体を直接参照するリンクのことで、実体のファイルとリンクのiノード番号が同じ値になる為、
    ハードリンクを複数作成可能ですが、ファイルを新規作成した場合はファイル実体とハードリンクが1つある状態になります。

    $ ls -li lnfile01
    1831489 -rw-rw-r– 1 test test 0 11月 20 10:55 lnfile01
    行頭の数字がiノード番号、アクセス権と所有者名の間にある数字「1」がハードリンクの数になります。

    ハードリンクが複数ある場合(リンク数が1以上の場合)、元のリンク(ファイルを作成した時のリンク)を削除しても、
    別のハードリンクがファイル実体とリンクしている為、実体が残ります。

    ハードリンクには次の制限があります。
    ・無限にディレクトリが作成できないよう、ディレクトリのハードリンクは作成できません。
    ・iノードの管理が異なる為、別のファイルシステムへのハードリンクは作成できません。

  • シンボリックリンク
  • シンボリックリンクはハードリンクと異なり、ファイル実体を参照せず、ファイル実体へのパスを指し示すリンクのことです。

    シンボリックリンクではファイル実体とiノード番号が異なり、「元ファイルやディレクトリがどこにあるのか」というパス情報を持ちます。

    ファイル実体と直接リンクがされていない為、シンボリックリンクを残したままファイル実体の削除が可能で、ファイル実体を削除した上で
    シンボリックリンクにアクセスすると、ファイル実体が見つけられずにエラーとなります。

    ディレクトリや異なるファイルシステムへのリンクも可能です。

    $ ls -li slnfile0*
    1831490 -rw-rw-r– 1 test test 0 11月 20 11:09 slnfile01
    1831491 lrwxrwxrwx 1 test test 9 11月 20 11:18 slnfile02 -> slnfile01
    シンボリックシンクのアクセス権表記は左端に「l」が付加されて、「lrwxrwxrwx」となりますが、実際はリンク元のアクセス権が適用されます。

    ハードリンクとシンボリックの違いは次のとおりです。

    ハードリンク シンボリックリンク
    管理情報 inode番号 ファイルパス
    ファイルの種類 元ファイルと同じ シンボリックリンク
    元ファイル削除時のリンクファイル 影響なし アクセスできなくなる
    リンクファイル削除時の元ファイル 影響なし 影響なし
    ディレクトリへの作成 できない できる
    別ファイルシステムへの作成 できない できる

  • リンクの作成
  • リンクの作成にはlnコマンドを使用します。

    [コマンド書式]
    ln -オプション リンク元 リンク先

    オプションなしで実行すると、ハードリンクが作成され、シンボリックリンクを作成するには、-sオプションを使用します。

    [コマンド実行例]ハードリンクを作成
    $ ls -li hlnfile0*
    1831489 -rw-rw-r– 1 test test 0 11月 20 11:40 hlnfile01

    $ ln hlnfile01 hlnfile02

    $ ls -li hlnfile0*
    1831489 -rw-rw-r– 2 test test 0 11月 20 11:40 hlnfile01
    1831489 -rw-rw-r– 2 test test 0 11月 20 11:40 hlnfile02

    [コマンド実行例]シンボリックリンクを作成
    $ ls -li slnfile01
    1831490 -rw-rw-r– 1 test test 0 11月 20 11:09 slnfile01

    $ ln -s slnfile01 slnfile02

    $ ls -li slnfile0*
    1831490 -rw-rw-r– 1 test test 0 11月 20 11:09 slnfile01
    1831491 lrwxrwxrwx 1 test test 9 11月 20 11:18 slnfile02 -> slnfile01

    ページ:

    1

    2 3
    • このエントリーをはてなブックマークに追加

    PAGE TOP