У меня есть локальный веб-сервер разработки под управлением Ubuntu. У меня также есть iMac под управлением OS X 10.6, который я использую в качестве клиента и является моей машиной для разработки.
В настоящее время на моем сервере Ubuntu установлен сервер Samba. У меня есть общие настройки для всех каталогов веб-сайта.
Затем я использую свой Mac и Coda для редактирования файлов через их общие ресурсы.
Обычно это работает очень хорошо, но я заметил, что мой Mac писал множество вилок ресурсов. ._filename
файлы везде. О файлах я узнал следующее:
Эти файлы создаются на томах, которые изначально не поддерживают полные характеристики файлов HFS (например, тома ufs, общие файлы Windows и т. Д.). Когда файл Mac копируется на такой том, его вилка данных сохраняется под обычным именем файла, а дополнительная информация HFS (вилка ресурса, коды типа и создателя и т. Д.) Сохраняется во втором файле (в формате AppleDouble), с именем, которое начинается с "._". (Эти файлы, конечно, невидимы для OS-X, но не для других ОС; иногда это может раздражать ...)
Кто-нибудь знает способ обмена файлами между клиентом Mac и сервером Linux, который наиболее совместим между двумя операционными системами?
В идеале он должен поддерживать файловую систему HFS, чтобы не создавались ответвления ресурсов, а также должен поддерживать разрешения между сервером и клиентом.
Netatalk - ваш ответ.
Чтобы приступить к работе, может потребоваться некоторое время из-за зашифрованной аутентификации, требуемой более новыми версиями OS X. Однако это выполнимо, и я делал это дважды.
afpd.conf должен содержать - -tcp -noddp -uamlist uams_dhx2_passwd.so
- модуль uams_dhx2_passwd важен, чтобы разрешить аутентификацию.
он не будет компилироваться без необходимых пакетов в системе, он просто молча не скомпилирует его, поэтому убедитесь, что они есть.
$ ./configure --enable-redhat-sysv --prefix=/data/software/netatalk
Версия: 2.2.3
Акции AppleVolumes состоят из:
/data/shared/ ShareName allow:user1,user2 cnidscheme:dbd options:usedots,upriv dperm:0770 fperm:0660
Пользователи являются пользователями системы, а права доступа клиента будут такими же, как у пользователя, от имени которого они аутентифицированы.
Для трансляции в сеть используйте Avahi. Это определение службы afpd:
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=Xserve</txt-record>
</service>
</service-group>
Я надеюсь, что это имело смысл. Он взят из моих собственных заметок (которые я храню в разметке), поэтому на самом деле он не предназначен для кого-либо, кроме меня. Я надеюсь, что это имеет для вас достаточно смысла.
А как насчет использования директивы "вето файлы" в самбе?
Что-то вроде:
[sharename]
... other settings...
Veto files = /*._*
Никогда не пользовался, но должно работать :)
ссылка: http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html#VETOFILES
Вы можете заставить Samba скрывать эти точечные файлы для других клиентов SMB с помощью параметра
hide dot files = yes
в вашем smb.conf.
Это достаточно хорошо работает в отношении сокрытия файлов (до тех пор, пока пользователи не говорят проводнику Windows показывать им скрытые файлы), но это не решает фундаментальной проблемы, поскольку пара файла и соответствующего файла точки обычно быстро рассинхронизируется, когда задействованы системы, отличные от Mac OS. Это происходит, когда вы переименовываете, удаляете или перемещаете файл в Linux или Windows, и точечный файл не изменяется соответствующим образом.
Чтобы действительно решить проблему много лет назад, мне пришлось переключиться на сервер MacOS X на бэкэнде, но у него есть и другие недостатки, и я не уверен, что сделаю это снова.