質問

    

この質問にはすでに回答があります:

         

Mac  OS  Xのディレクトリへのハードリンクを作成するにはどうすればよいですか

この機能は、 Mac  OS  X  v10.5でファイルシステムに追加されました(Leopard)(タイムマシン用)ですが、コマンドラインから実際に使用するための情報が見つかりませんでした。

役に立ちましたか?

解決

残念ながら、Appleは ln コマンドを無効にしました。次のプログラムを使用して、ディレクトリへのハードリンクを作成できます。

#include <unistd.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
 if (argc != 3) {
  fprintf(stderr,"Use: hlink <src_dir> <target_dir>\n");
  return 1;
 }
 int ret = link(argv[1],argv[2]);
 if (ret != 0)
  perror("link");
 return ret;
}

ハードリンクされたディレクトリが同じ親ディレクトリにない場合があるので、これを行うことができます。

$ gcc hlink.c -o hlink
$ mkdir child1
$ mkdir parent
$ ./hlink child1 parent/clone2

他のヒント

誰かが興味を持っている場合、Gitリポジトリに提案された回答をまとめました: https://github.com / selkhateeb / hardlink

インストールしたら、次のコマンドでハードリンクを作成します。

hln source destination

unlink コマンドがMac&nbsp; OS&nbsp; X&nbsp; v10.6(Snow&nbsp; Leopard)で機能しないことにも気づいたため、リンクを解除するオプションを追加しました:

hln -u destination

ハードリンクをインストールするには、 Homebrew を使用して実行します:

brew install hardlink-osx

リンクされている他のディレクトリのコンテンツを削除せずにディレクトリへのハードリンクを削除する方法についてのthe_undefinedによる質問への回答:私が知る限り、コマンドラインからは実行できません組み込みコマンドを使用します。ただし、この小さなプログラム(Freemanの投稿に触発された)はそれを行います:

#include <unistd.h>
#include <stdio.h>

int main(int argc, char* argv[]) {
    if (argc != 2) {
        fprintf(stderr,"Use: hunlink <dir>\n");
        return 1;
    }
    int ret = unlink(argv[1]);
    if (ret != 0)
        perror("unlink");
    return ret;
}

フリーマンの例を続けるには、

$ gcc hunlink.c -o hunlink
$ echo "foo bar" > child1/baz.txt
$ ./hunlink parent/clone2

parent / clone2のハードリンクを削除しますが、ディレクトリ child1 およびファイル child1 / baz.txt はそのままにします。

別の解決策は、bindfs https://code.google.com/p/bindfs/ ポート経由でインストール可能:

sudo port install bindfs
sudo bindfs ~/source_dir ~/target_dir
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top