Tworzenie katalogów twardych linków w MacOS X? [duplikat]
To pytanie ma już odpowiedź tutaj:
Jak utworzyć twarde łącze do katalogu w systemie OSX?
Ta funkcja została dodana do ich systemu plików w 10.5 (Dla time machine), ale nie mogłem znaleźć żadnych informacji na temat jej używania z wiersz poleceń.
4 answers
Niestety Apple uszkodziło komendę {[2] }. Możesz użyć następującego programu do utworzenia twardego łącza do katalogu:
#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;
}
Weź pod uwagę, że twardo połączone katalogi mogą nie znajdować się w tym samym katalogu nadrzędnym, więc możesz to zrobić:
$ gcc hlink.c -o hlink
$ mkdir child1
$ mkdir parent
$ ./hlink child1 parent/clone2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-10 11:32:58
Dodałem sugerowaną odpowiedź do git rep jeśli ktoś jest zainteresowany: https://github.com/selkhateeb/hardlink
Po zainstalowaniu Utwórz twardy link za pomocą:
hln source destination
Zauważyłem również, że unlink
komenda nie działa na snow Leopardzie, więc dodałem opcję odłączenia:
hln -u destination
Aby zainstalować Hardlink, użyj homebrew i uruchom:
brew install hardlink-osx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-10 21:06:29
W odpowiedzi na pytanie the_undefined o to, jak usunąć twarde łącze do katalogu bez usuwania zawartości innych katalogów, do których jest połączone: o ile mogę powiedzieć, nie można tego zrobić z linii poleceń za pomocą wbudowanych poleceń. Jednak ten mały program (zainspirowany postem Freemana) zrobi to: {]}
#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;
}
Idąc za przykładem Freemana,
$ gcc hunlink.c -o hunlink
$ echo "foo bar" > child1/baz.txt
$ ./hunlink parent/clone2
Usunie hardlink z parent / clone2, ale opuści katalog child1 i plik child1 / baz.tylko txt.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-13 21:36:38
Innym rozwiązaniem jest użycie bindf https://code.google.com/p/bindfs/ który można zainstalować przez port:
sudo port install bindfs
sudo bindfs ~/source_dir ~/target_dir
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-12 21:41:45