この記事では、Linux のハード リンクとソフト リンク、および i ノード関連の問題に関する関連知識を提供します。皆様のお役に立てれば幸いです。
まえがき
フロントエンド パッケージ マネージャー pnpm は最近非常に人気があり、多数の記事で pnpm の原理が分析されています。理解したところ、pnpm のアーキテクチャ全体がハードリンクとソフトリンクに基づいて構成されていることがわかりましたが、この 2 つの概念について漠然としているので、勉強したいと思います。
ご存知のとおり、Unix/Linux システムではすべてがファイルです。 Linux システムではファイルが非常に重要であることがわかります。ファイルに関して私たちが通常より直観的に感じているのは、間違いなくファイル名とファイルの内容です。しかし、Linux ファイル システムには、ファイル名とファイルの内容に加えて、inode という非常に重要な概念もあります。
inode
Wikipedia では、inode について次のように説明しています。
意味: inode は、Unix のようなファイル システムでファイル システム オブジェクト (ファイルやフォルダーなど) を記述するために使用されるデータ構造です。ファイルのさまざまな属性 (最後の i ノード変更時刻、最終アクセス時刻、最終変更時刻、許可情報などのメタ情報) が格納されます。フォルダーは、それ自体のエントリ、その親ノードのエントリ、およびすべての子ノードを含む i ノードのグループです。 実際には、inode には上記以外のものが含まれます。特に:inode (インデックス ノード) は、Unix のデータ構造です。ファイルやディレクトリなどのファイル システム オブジェクトを記述するスタイルのファイル システム。各 i ノードには、オブジェクトのデータの属性とディスク ブロックの場所が格納されます。ファイル システム オブジェクトの属性には、メタデータ (最終変更、アクセス、修正の時刻) が含まれる場合があります。
#ディレクトリは、割り当てられた名前を持つ i ノードのリストです。リストには、それ自体、その親、およびそのそれぞれの子のエントリが含まれます。
- ファイルのバイト数
- ファイルのバイト数 ユーザー ID
- ファイルのグループ ID
- ファイルの読み取り、書き込み、実行権限
- タイムスタンプ: ctime、inode が最後に変更された時刻、mtime、ファイルの内容が最後に変更された時刻、atime、ファイルが最後に開かれた時刻
- #リンクの数、つまり、存在するファイルの数。名前は、この i ノードの場所を指します。
- ファイル データ ブロック
ln test.txt test_hard.txtなどのハード リンクを作成します。 #ハード リンクを作成する前、test.txt は次のように表すことができます:
#ハード リンクを作成した後:
# test_hard.txt の i ノードはソース ファイル test.txt と同じですが、リンク数が 2 になっていることがわかります。
最初の列は i ノード番号です。どちらも 13029546 であることがわかり、2 つのファイルは同じ i ノードを使用します。 2 列目は権限情報、4 列目は所有者、6 列目はファイルのコンテンツのサイズです。ご覧のとおり、ファイル名が異なることを除いて、ハード リンクによって作成されたファイルには、ソース ファイルとまったく同じメタ情報が含まれています。 3 列目はリンク数を示しており、現在のリンク数は 2 であることがわかります。
软链接
准确来说叫符号链接(symbolic link),一般又叫软链接(soft link)。与硬链接共用一个inode不同,软链接会创建新的inode,并指向源文件。可以理解软链接就是windows系统中的桌面快捷方式。
创建软链接的命令和硬链接很像,多了-s参数:ln -s
ln -s test.txt test_symbolic.txt
对应的nodejs的fs.symlink方法。
创建软链接之后:
源文件inode的链接数还是1,创建了新的inode,软链接指向源文件。
执行ls -li看一下:
可以看到,软链接的inode number跟源文件的不一样,权限一列开头为小写L,表示软链,链接数为1,大小为8个字节。没错,软链文件也有大小,不过一般很小,毕竟只是一个快捷方式。
对比
文件重命名或文件移动
文件重命名和文件移动对于Linux系统来说都是文件绝对路径的更改。对硬链接来说,文件重命名或文件移动不会改变链接指向,而对软链接来说,文件重命名或文件移动则使链接断开,这时通过软链接修改文件内容时会重新创建一个新的inode,跟原文件名和文件数据块关联。
文件删除
rm命令或者nodejs的unlink其实是将inode的链接数减1。对于前文的硬链接,删除test_hard.txt使得inode1的链接数变成1,当链接数变成0时,系统就会释放掉这个inode,之后再创建的新文件就可以使用该inode的inode number了。这时没有inode指向文件数据block,所以文件找不到了。但实际上文件数据还存在硬盘中,所以经常能看到网上有一些帮助恢复误删的文件的工具。软链接inode链接数为1,删除软链接则系统释放该inode。
链接文件和文件夹
软链接可以链接文件和文件夹,但硬链接只能链接文件。
不同文件系统创建链接
软链接可以跨不同的文件系统创建,但是硬链接不行,因为硬链接是共用一个inode,而不同的文件系统有不同的inode table。
应用场景
硬链接
文件备份:为了防止重要的文件被误删,文件备份是一种好的办法,但拷贝文件会带来磁盘空间的消耗。硬链接能不占用磁盘空间实现文件备份。
文件共享:多人共同维护同一份文件时,可以通过硬链接的方式,在私人目录里创建硬链接,每个人的修改都能同步到源文件,但又避免某个人误删就丢掉了文件的问题。
文件分类:不同的文件资源需要分类,比如某个电影即是的分类是外国、悬疑,那我们可以在外国的文件夹和悬疑的文件夹里分别创建硬链接,这样可以避免重复拷贝电影浪费磁盘空间。有人可能说,使用软链接不也可以吗?是的,但不太好。因为一旦源文件移动位置或者重命名,软链接就失效了。
软链接
快捷方式:对于路径很深的文件,查找起来不太方便。利用软链接在桌面创建快捷方式,可以迅速打开并编辑文件。
灵活切换程序版本:对于机器上同时存在多个版本的程序,可以通过更改软链接的指向,从而迅速切换程序版本。这里提到了python版本的切换可以这么做。
动态库版本管理:不是很懂,具体可以看这里。
总结
Linux系统通过inode管理文件,inode存储着文件字节数、文件权限、链接数、数据block位置等信息。
硬链接与源文件共用inode,除了文件名不同,其他与源文件一样。不能对文件夹创建硬链接,不能对不同的文件系统的文件创建硬链接。
软链接类似于windows的快捷方式,有独立的inode。可以对文件夹或不同文件系统的文件创建软链接。
硬链接和软链接修改文件内容都会同步到源文件,因为本质上它们都是指向源文件的数据block。
相关推荐:《Linux视频教程》
以上がLinuxのハードリンクとソフトリンクがわかる(画像と文章で詳しく解説)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、DebianシステムのGitLab問題の効率的なトラブルシューティングのための実用的なガイドを提供します。 1.ログファイルのチェック最初に、通常/var/log/gitlabディレクトリにあるgitlabログファイルを確認します。 Unicorn、Nginx、およびSidekiqのログは特に重要であり、サービスのクラッシュやエラーの手がかりを提供できます。 2。システムリソース監視TOPまたはHTOPおよびその他のツールを使用して、サーバーのCPU、メモリ、ディスクの使用を監視します。リソースの使用量が多いと、GitLabが不安定になる可能性があります。コマンドpsaux | grepgitlabは、gitlabプロセスのリソース使用量を表示できます。 3。ネットワーク接続テストサーバーネットワーク接続が正しいことを確認します

Debianメールサーバーに問題がありますか?心配しないでください、この記事は、一般的な失敗の診断と解決を支援するための段階的なガイドを提供します。ステップ1:サービスステータスを最初に確認し、ポストフィックスとdovecotメールサービスが正常に実行されているかどうかを確認します:sudosystemctlstatuspostfixsudosystemctlstatusdovecotサービスが停止した場合、次のコマンドを使用して、Sudosystemctlstartpostpostfixsudosudosystemctlstlstlstartdovecot view view in giol to gire in gile analysion

Debian Mail Serverが携帯できるユーザーの数は固定値ではありませんが、多くの要因の複合効果に依存します。これらの要因には、サーバーハードウェア構成、ネットワーク帯域幅、メールサーバーソフトウェア、およびその構成、およびユーザーの使用習慣が含まれます。主な影響要因:メールサーバーソフトウェアと構成:一般的に使用されるメールサーバーソフトウェアには、PostFix(高速、信頼性、軽量)、EXIM(高度にカスタマイズ可能)、DoveCot(人気のあるIMAP/POP3サーバー)が含まれます。それらの構成オプション(メールキューサイズ、接続制限など)は、サーバーのパフォーマンスに直接影響します。ハードウェアとネットワーク環境:サーバーCPU、メモリ、ストレージスペース、ネットワーク帯域幅、およびネットワーク接続の安定性と速度

DebianシステムでOpenSSLのセキュリティを確保するには、次の手順に従ってください。1。システムの更新:まず、Debianシステムを最新バージョンに更新します。次のコマンドを使用して、パッケージリストを更新し、インストールされているすべてのソフトウェアをアップグレードします:sudoaptupdatesudoaptupgrade2。バージョンの確認:現在のopenSSLバージョンを確認します:OpenSSlversion3。OpenSSLアップグレード:バージョンが古すぎる場合はアップグレードしてください。方法1:ダイレクトアップグレード(推奨):次のコマンドを使用して、OpenSSL:sudoaptinstallの最新バージョンに直接アップグレードします。

この記事では、Debian SystemsのOpenSSLの問題を効果的にトラブルシューティングおよび解決する方法を紹介します。 1.システムとソフトウェアパッケージの更新最初に、Debianシステムが最新バージョンに更新されていることを確認してください:sudoaptupdatesudoaptupgrade2。OpenSSLと開発ライブラリのインストールOpenSSLとその必要な開発ライブラリ:sudoaptinInstallibsslibssl-devのインストール、インストールがマニュになった場合、インストール3。 OpenSSLのコンパイルとインストール:opから

Debian Systemsでは、OpenSSL構成ファイルは通常、 /etc /sslディレクトリにあります。ただし、正確なファイルの場所は、インストール方法とopenSSLバージョンによって異なる場合があります。いくつかの一般的なファイルは次のとおりです。SSL証明書とキー:通常、/etc/ssl/certsおよび/etc/etc/ssl/privateディレクトリに保存されます。メイン構成ファイル:openssl.cnfファイルは、通常/etc/ssl/openssl.cnfにあるopensslのメイン構成ファイルです。 APTなどのパッケージマネージャーを使用してOpenSSLをインストールする場合、これらのファイルは自動的に作成され、対応するディレクトリに配置する必要があります。ご注意ください

PHP開発環境を簡単に解決するために、Debianシステムにphpstormをインストールしてください!次の手順では、インストールプロセス全体をガイドします。インストール手順:PHPSTORMをダウンロード:JetBrainsの公式Webサイトにアクセスして、PHPSTORMの最新バージョンをダウンロードしてください。インストールパッケージを解凍します:WGETまたはCURLを使用してダウンロードした後、指定されたディレクトリ( /OPTなど)に解凍します。コマンド例:wgethttps://download.jetbrains.com/phpstorm/phpstorm-2024.3.5.tar.gztar-xzfphpphpstorm-2024.3.5.tar.gz

Debian Systemソフトウェアをインストールする最も便利な方法は、APTパッケージマネージャーを使用することです。次の手順では、APTを効率的に使用する方法をガイドします。パッケージ情報を更新します。まず、ローカルパッケージリストを更新して、最新のソフトウェア情報と利用可能な更新が取得されるようにします。次のコマンドを実行します。sudoaptupdate検索ターゲットソフトウェア:Aptsearchコマンドを使用して、必要なソフトウェアを見つけます。たとえば、テキストエディターを見つけるには、次のように入力します。AptSearchEditorSystemはすべてのマッチングパッケージを返します。ソフトウェアのインストール:ターゲットソフトウェアパッケージを見つけた後、AptinStallコマンドを使用してインストールします。たとえば、Nginx Webサーバーをインストールします


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール
