GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでハードリンクとソフトリンクを操作する方法

ハードリンク およびソフトリンク Unixライクな環境で作業しているときに理解する重要な概念です。この記事では、ハードリンクとソフトリンクとは何か、およびLinuxでそれらを作成する方法について説明します。

Linuxはすべてをファイルとして扱います。ブロックデバイス、キャラクターデバイス、ソケット、名前付きパイプのいずれであっても、Linuxはそれらをファイルとして扱います。 ハードリンク およびソフトリンク また、別のファイルを参照して実際に作成されるファイルの一種です。

Linuxのハードリンクとは

ハードリンク 元のファイルのクローンのようなものです。すべてのハードリンクは同じiノード番号を共有し、元のファイルまたは他のハードリンクされたファイルを削除しても他のファイルには影響しませんが、ファイルの内容を読み取ることができます。

:ディレクトリのハードリンクは作成できません。

Linuxでハードリンクを作成する方法

ハードリンクを操作する方法を見てみましょう。 file1.txtという名前のファイルを作成しています それにいくつかの内容を書きます。

$ cat file1.txt

次に、-iを指定してlsコマンドを実行します。 file1.txtのiノード番号を確認するためのフラグ とリンク数。

$ ls -li file1.txt

次に、新しいハードリンクを作成し、同じlsコマンドを実行します。 iノード番号を確認します。両方のファイルのiノード番号が同じであることがわかります。

$ ln <source-file> <destination-file>
$ ln file1.txt file2.txt

次に、 file2.txtから新しいハードリンクファイルを作成します。 これはfile1.txtからすでに作成されています 。リンク数を確認すると、すべてのファイルで3に更新されます。

$ ls -li file2.txt /home/karthick/file3.txt

Linuxでハードリンクを削除する方法

これで、ハードリンクされたファイルのいずれかを削除すると、それに応じてすべてのファイルのリンクカウントが更新され、ファイルの内容に引き続きアクセスできます。

$ rm file1.txt

ファイルシステム全体でハードリンクされたすべてのファイルを完全に削除するには、findコマンドを使用して、同じiノード番号のファイルを検索し、ファイルを削除します。

$ find <directory> -inum <inode-number>  # SYNTAX
$ find / -inum 415314          # Finding all files with Inode 51425368

ファイルを削除するには、 execを追加します 検索へのコマンド コマンド。

$ sudo find / -inum415314 -exec rm -f {} \;

検索を実行すると コマンドを実行し、ファイルシステム内のすべてのディレクトリをスキャンする場合は、 sudoを使用することをお勧めします。 。

Linuxのソフトリンクとは

ソフトリンク シンボリックリンクまたはシンボリックリンクと呼ばれることもあります。ソフトリンクを作成すると、新しいファイルが作成され、そのファイルは親ファイルを指します。これは、ファイルやフォルダー用に作成するショートカットと考えてください。新しいファイルには、親ファイルとは異なるiノードがあります。

$ cat > slink.txt
$ ls -li slink.txt

Linuxでソフトリンクを作成する方法

次に、新しいソフトリンクを作成し、同じlsコマンドを実行します。 iノード番号を確認します。両方のファイルのiノード番号が同じであることがわかります。また、各ファイルのリンク数も確認してください。

$ ln -s <source> <destination>      # SYNTAX
$ ln -s file1.txt file2.txt

上の画像のリンク数を見てください。常に1になります。 すべてのファイルが個別のiノード番号を取得するため、ソフトリンクの場合。これで、ソフトリンクを削除しても、元のファイルには影響しません。

#  grep ^ ./slink*   # Display the contents of file1, file2
#  rm slinked_linked.txt

元のファイルを削除すると、リンクされたファイルにアクセスしようとしたときにエラーがスローされます。

$ ls -li
$ rm slink.txt
$ ls -li
$ cat slink_linked.txt

親ファイルを削除しても、リンクされているすべてのファイルを削除するのを忘れる場合があります。次のコマンドを実行すると、孤立したすべてのソフトリンクを確認およびクリーンアップできます。 検索 コマンドは、 / home /から孤立したすべてのリンクを見つけようとします ディレクトリと-delete リンクが削除されます。

# find -L /home/ -type l -delete

この記事は以上です。貴重なフィードバックや記事を改善するためのヒントをお聞かせください。


Linux
  1. Linuxでスペースと特殊文字を含むファイル名を操作する方法

  2. Linuxで出力をファイルとStdoutにリダイレクトする方法

  3. Linux で MB ではなく GB で du を表示するにはどうすればよいですか?

  1. Linuxでの例で「cat」および「tac」コマンドを使用する方法

  2. NFSとは何ですか?Linuxにインストールする方法

  3. 長い名前の Linux mv ファイル

  1. Linuxでファイルとディレクトリを圧縮する方法(例付き)

  2. Linuxで.gzファイルと.tar.gzファイルを抽出する方法

  3. Linuxでユーザーとグループを操作する方法