символические ссылки работают при совместном использовании с Windows или Linux (smb), но прерываются при совместном использовании с Mac (afp или smb) - PullRequest
5 голосов
/ 24 января 2011

На Mac у меня есть общая папка ~ \ Documents.Есть две подпапки, Data и Data_2011, первая из которых содержит папки файлов за последние несколько лет, а вторая содержит символические ссылки на папки в папке Data, которые были обновлены с 1 января 2011 года. Ссылки были созданы со стандартнымКоманда ln -s .

Когда я монтирую общую папку «Документы» на компьютере Windows, ссылки работают.Когда я монтирую на Linux с помощью smb, ссылки работают.Когда я использую эти ссылки непосредственно на хостинге Mac, они работают.Однако, когда я монтирую папку «Документы» с удаленного Mac, программные ссылки не работают.Чтобы было понятно, я монтирую папку «Документы», перейдя в Finder> Подключиться к серверу> afp: //xxx.xxx.xx.xx/ или smb: //xxx.xxx.xx.xx/Documents

Есть идеи, как заставить эти программные ссылки работать при совместном использовании с удаленным Mac?

-Sibo

1 Ответ

4 голосов
/ 24 января 2011

При совместном использовании файлов Mac OS символические ссылки отображаются как фактические символические ссылки.

Если я подключу один Mac к другому, используя AFP или SMB, я могу это подтвердить.

Обратите внимание, что символические ссылки разрешаются клиентом - даже в случае совместного использования файлов это означает, что относительные пути в символических ссылках могут быть сложными, а в этом случае, связанных с общим доступом к файлам, это означает, что клиентский компьютер должен быть в состоянии увидеть целевой файл (целевой файл также должен находиться в папке, к которой открыт общий доступ и смонтирован), и путь должен быть таким же.

Например, если я создаю текстовый файл с именем «foo» в моем домашнем каталоге, тогда выполните «ln -s foo symlink», чтобы создать ссылку на него с именем symlink, затем смонтируйте этот домашний каталог со второго компьютера и выполните «ls -l» отображается как «symlink @ -> foo», и, если я поймаю файл, я смогу его прочитать. Но если я создаю символическую ссылку как «ln -s / Users / matt / foo symlink», то на втором компьютере ls -l показывает ее как «symlink @ -> / Users / matt / foo», а cat говорит «cat: символическая ссылка: Нет такого файла или каталога ". Это связано с тем, что на втором компьютере / Users / matt является локальным домашним каталогом, в котором нет файла с именем foo (и, если это произойдет, все, что разрешает символическую ссылку, будет видеть локальный foo, а не foo, общий для первого компьютера) .

Так что в основном: вы можете использовать "ls -l", чтобы увидеть, куда указывает символическая ссылка, и заметить, что клиентский компьютер разрешит символическую ссылку и попытается открыть любой файл с таким именем, который может быть, а может и не совпадать с ожидаемым. .

(Вероятно, причина того, что ваш тест работал на вашем компьютере с Linux, а не на вашем Mac, заключается в том, что на компьютере Linux установлено больше общих сетевых ресурсов или с другими именами, так что целевое имя символической ссылки было допустимым именем файла на компьютере Linux, но не Mac.)

...