O que é o comando Bash para criar um hardlink para um diretório no OS X?

2

Como você cria um link físico (em oposição a um symlink ou um alias do Mac OS) no OS X que aponta para um diretório? Existe o comando "ln target destination", mas isso só funciona quando o alvo é um arquivo.

Eu sei que o Mac OS, ao contrário de outros ambientes Unix, permite hardlinking para pastas (isso é usado para o Time Machine, por exemplo), mas eu não sei como fazer isso sozinho. Também estou ciente de que o uso de hardlinks de diretório não é uma "melhor prática", pois pode fazer com que alguns programas sejam recondicionados infinitamente durante a varredura de uma árvore.

    
por username 09.05.2009 / 13:42

4 respostas

0

Você não pode fazer isso diretamente no BASH então. No entanto ... encontrei um artigo aqui que discute como fazê-lo indiretamente: link compilando um pequeno programa simples:

#include <unistd.h>
#include <stdio.h>
int
main(int argc, char *argv[])
{
   if (argc != 3)
      return 1;
   int ret = link(argv[1], argv[2]);
   if (ret != 0)
      perror("link");
   return ret;
}

$ gcc -o hlink hlink.c -Wall
    
por 09.05.2009 / 13:43
1

Aqui está o link para a pergunta sobre estouro de pilha:

O que é o comando Bash para criar um hardlink para um diretório no OS X?

    
por 09.05.2009 / 13:47
1

É supostamente impossível.

De man 2 link :

int link(const char *path1, const char *path2);

 ....

In order for the system call to succeed, path1 must exist and both path1 and path2 must be in the same file system. As mandated by POSIX.1, path1 may not be a directory.

Eu tentei o código na outra resposta no MacOS X 10.5.6 - ele não funcionou ao tentar criar um link de um diretório para o mesmo nome no mesmo diretório.

No entanto, funciona se os dois diretórios resultantes não tiverem o mesmo pai. É necessário ler o artigo vinculado para descobrir isso.

    
por 09.05.2009 / 15:19
1

Ouvi dizer que ele foi desativado intencionalmente, pois pode ficar complicado quando você altera os links físicos para . e outras coisas.

    
por 26.01.2010 / 14:55