タグ付けされた質問 「hard-link」

ハードリンクは、ファイルシステム上の別のファイルに名前を関連付けるファイルシステムエントリです。

4
ファイルはそのiノードで取得できますか?
次のコマンドを指定された順序で実行しました。 $ln a b $ls -i a b 523669 a 523669 b $rm -f a $ls -i b 523669 b このテストから、コマンドはrm実際にファイルではなくファイル名(aこのテストでは)のみを削除すると結論付けましたb。 私の質問は、ファイルが1つのファイル名のみにハードリンクrmされている場合、そのファイルに対して実行されると、実際のファイル(つまりiノード)は完全に削除されますか?そうでない場合、ファイルiノードはファイル名なしで、iノードのみを介して取得できますか?
27 rm  hard-link  inode 


1
FATファイルシステム上のファイルを置き換えるdpkg
dpkg(および最終的にapt-getなどのように)パッケージをアップグレードまたは再インストールすると、ファイルを置き換える前にファイルへのハードリンクを作成して既存のファイルをバックアップします。こうすると、アンパックが失敗した場合、既存のファイルを簡単に戻すことができます。Bad Things™の発生からオペレーティングシステムを保護するので、それは素晴らしいことです。 ただし、ファイルシステムがハードリンクをサポートしている場合にのみ機能します。FATファイルシステムなど、すべてのファイルシステムがそうするわけではありません。 私は特定の組み込みARMプラットフォーム用のDebianのディストリビューションに取り組んでいます。ブート環境では、特定のファイル(カーネルが含まれています)がFATファイルシステム上にある必要があります。 カーネルパッケージ(またはそのFATパーティションにファイルがある他のパッケージ)をアップグレードしようとすると、インストールは次のように失敗します。 dpkg: error processing archive linux-image3.18.11+_3.18.11.2.armadillian_armhf.deb (--install): unable to make backup link of `./boot/vmlinuz-3.18.11+' before installing new version: Operation not permitted そして、アップグレード全体が失敗します。 私はウェブを探しましたが、特定のアップグレードを行うときに特定の問題を抱えている特定の人だけを見つけることができます。その答えは通常「/boot/vmlinuz-3.18.11+を削除して再試行する」です。その特定の問題を修正します。 しかし、それは私にとっての答えではありません。私はOSユーザーではなくOSディストリビューターなので、アップグレードを行う前にエンドユーザーが手動でカーネルファイルを削除する必要のない、これを修正する方法が必要です。/ bootのファイル(または、アップグレード操作が多少遅くなりますが、気にするすべてのファイル)の「ハードリンクではなくコピー」をdpkgに伝える方法、または「ハードリンクが失敗した場合、文句を言わないで、代わりにコピーするだけです。」 --force-unsafe-ioやのような--force-allフラグを試してみましたdpkgが、何も効果がありません。
22 dpkg  hard-link  fat 

5
ハードリンクが同じファイルシステム内でのみ有効なのはなぜですか?
私はマーク・ベイツによるコマンドラインへのこのイントロを読んでいます。 最初の章で、彼はハードリンクがファイルシステムにまたがることができないことに言及しています。 ハードリンクについて注意すべき重要なことは、ハードリンクが現在のファイルシステムでのみ機能することです。別のファイルシステム上のファイルへのハードリンクを作成することはできません。これを行うには、シンボリックリンク、セクション1.4.3を使用する必要があります。 私が知っているファイルシステムは1つだけです。ルート(/)から始まるもの。ハードリンクがファイルシステムにまたがることはできないというこの声明は、私には意味がありません。 ウィキペディアのUnixファイルシステム上の記事では、どちらかの役に立ちません。

4
ハードリンクとコピーされたファイルの違いは何ですか?
私の理解では、ハードリンクには元のファイルのコピーが含まれており、一方のディレクトリにあるハードリンクされたファイルを削除できますが、それはもう一方のディレクトリに存在します。 その場合、なぜハードリンクを使用したいのですか?なぜ2つの別々のファイルを持たないのですか?
22 files  rhel  hard-link 

2
ハードリンクの逆参照
tarコマンドのマニュアルページには、ハードリンクをたどるオプションがリストされています。 -h, --dereference follow symlinks; archive and dump the files they point to --hard-dereference follow hard links; archive and dump the files they refer to tarファイルがハードリンクであることをどのようにして知るのですか?それはどのように続きますか? このオプションを選択しないとどうなりますか?どのようにしていないハード逆参照?
22 tar  hard-link 

2
ハードリンクは通常のファイルとしてカウントされますか?
これを登録する方法があるかどうか疑問に思っていましたが、ほとんどの最新の検索エンジンは約5語以上の長さのフレーズではうまく機能しないので、これについてはいくらか助けが必要です。 ファイルを特定のタイプとして登録し、それに応じて決定を下す必要があるbashスクリプトを作成しているので、私はこれを疑問に思っていました。これは技術的には私のプロジェクトにとって重要ではありませんが、興味がありました。 また、それらが通常のファイルと見なされる場合、これらのファイルが解析せずにハードリンクされているかどうかを確認する方法はありますls -iか?find -iコマンドを使用せずに、任意のファイルXが他の任意のファイルYにハードリンクされているかどうかを確認する方法はありますか?

4
ハードリンクを使用したcpの動作に驚いた
私はハードリンクの概念を非常によく理解しており、cp---そして最近のPOSIX仕様---のような基本的なツールのマニュアルページを何度も読みました。それでも、私は次の動作を観察して驚いた: $ echo john > john $ cp -l john paul $ echo george > george この時点johnでpaul、同じiノード(およびコンテンツ)を持ちgeorge、両方の点で異なります。今私たちは: $ cp george paul この時点で、私は期待georgeとpaul異なるinode番号が、同じ内容---この期待が満たされたを持っている---しかし、私はまた、予想paul今から別のinode番号を持っているjohnとのために、johnまだコンテンツを持っていますjohn。これは私が驚いた場所です。ファイルをコピー先パスにコピーすると、paulその同じファイル(同じiノード)を、iノードを共有する他のすべてのコピー先パスにインストールする結果にもなりますpaul。cp新しいファイルを作成し、以前は古いファイルで占められていた場所に移動することを考えていましたpaul。代わりに、既存のファイルを開きpaul、切り捨てて、書き込むことですgeorgeのコンテンツを既存のファイルに追加します。したがって、同じiノードを持つ「その他」のファイルは、「それらの」コンテンツを同時に更新します。 わかりました、これは体系的な動作であり、それを期待することがわかったので、必要に応じて回避方法を利用したり、利用したりできます。この動作が文書化されるのを見るはずだったのは、私にとって何が困ったことですか?私がすでに見た文書のどこかに文書化されていない場合、私は驚くでしょう。しかし、どうやら私はそれを見逃したようで、この振る舞いについて議論するソースを見つけることができません。
20 cp  hard-link 

2
iノード(ext4)へのハードリンクを作成する方法は?
ファイルのインデックスノード(inode)は知っているが、そのパス(またはそのパス)がわからない場合、そのiノードへのハードリンクを直接作成することはできますか? を使用sudo find / -inum 123546してファイルを見つけてからハードリンクを作成できましたが、それは私のアプリケーションにとっては遅すぎるでしょう。 NB私はext4ファイルシステムを使用しています。
17 inode  hard-link 

2
ハードリンクの作成-許可?
どの許可がハードリンクの作成に影響しますか?ファイルの所有権自体が重要ですか? ユーザーaliceがtarget.txtディレクトリ内のファイルへのハードリンクを作成したいとしますtarget-dir。 とのalice両方でどのパーミッションが必要ですか?target.txttarget-dir 場合はtarget.txt、ユーザーが所有しているbillとtarget-dir、ユーザーによって所有されchad、それは何も変わりませんか? この状況をシミュレートして、ext4ファイルシステムに次のフォルダー/ファイル構造を作成しようとしました。 #> ls -lh . * .: drwxr-xr-x 2 bill bill 60 Oct 1 11:29 source-dir drwxrwxrwx 2 chad chad 60 Oct 1 11:40 target-dir source-dir: -r--r--r-- 1 bill bill 0 Oct 1 11:29 target.txt target-dir: -rw-rw-r-- 1 alice alice 0 Oct 1 11:40 dummy ながらaliceにソフトリンクを作成することができtarget.txt、彼女はハードリンクを作成することはできません。 …

5
ハードリンクを無視してフォルダーサイズを取得する方法
バックアップにはrsnapshotを使用します。これは、同じ名前のファイルを含む一連のフォルダーを生成します。一部のファイルはハードリンクされていますが、他のファイルは個別です。たとえば、hourly.1/file1とhourly.2/file1は同じファイルにハードリンクされている場合がありますが、hourly.1/file2とhourly.2/file2は完全に別のファイルです。 のファイルへのハードリンクであるファイルをhourly.2 無視して、フォルダーで使用されるスペースの量を見つけたいですhourly.1。そのため、上記の例では、file2のサイズを取得しますが、file1は無視します。 私はLinuxでbashを使用していますが、コマンドラインからできるだけ簡単にこれを実行したいので、大きなグラフィカルまたは他のOS専用のソリューションは必要ありません。

2
cpは。(ドット)または..(ドットドット)はソースディレクトリです
この回答は、隠しファイルを含むすべてのファイルsrcをディレクトリからディレクトリにコピーできることを示していますdest: mkdir dest cp -r src/. dest これが実際に機能する理由についての答えやコメントには説明がなく、これに関するドキュメントも見つけられないようです。 私はいくつかのことを試しました。まず、通常の場合: $ mkdir src src/src_dir dest && touch src/src_file src/.dotfile dest/dest_file $ cp -r src dest $ ls -A dest dest_file src そして、/.最後に: $ mkdir src src/src_dir dest && touch src/src_file src/.dotfile dest/dest_file $ cp -r src/. dest $ ls -A dest …

2
cp -lまたはlnとのハードリンクに違いはありますか?
rsyncとハードリンクを使用してバックアップスキームを実装しています。rsyncでlink-destを使用してハードリンクを実行できることはわかっていますが、rsyncで「link-dest」を実装する前に「cp -l」を使用するという記述を見ました。私が知っているハードリンクの別の方法は「ln」です。 私の質問は、好奇心からです:「ln」を使用する場合と「cp -l」を使用する場合のハードリンクの作成に違いはありますか?
15 cp  hard-link  ln 


2
同じファイルシステムでのハードリンク中の無効なクロスデバイスリンク
/ rootへのハードリンクが必要な/home/myuser/Desktop/rc/.netrcファイルがあります。つまり、rootユーザーのホームディレクトリです。私がする時: ln /home/user/Destkop/rc/.netrc /root 次のエラーが発生します。 ln:ハードリンクの作成/root/.netrc' =>.netrc ':無効なクロスデバイスリンク しかし、ファイルをmyuserのホーム、つまり/ home / myuserにハードリンクすると機能します。 それでは、問題は何ですか、ここにファイルシステムが1つしかないときに無効なクロスデバイスが表示されるのはなぜですか? PS。RHEL6を使用しています
14 rhel  root  home  hard-link  .netrc 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.