Придя однажды к приятелю в гости с ноутбуком, я решил скопировать пару фильмов с его компьютера. На обеих машинах была установлена openSuSE 10.2 и мы решили, что проще передать файлы по сети, чем нарезать болванку. И тут у меня возник вопрос, а каким способом удобнее сделать передачу файлов по сети между двумя linux-машинами? Навскидку можно назвать ftp, nfs, smb(для извращенцев) ;) и ssh. Я остановился на nfs.
openSuSE
1.Настройка сервера.
В SuSE все делается очень просто: запускаем Yast – Сетевые службы – Nfs-сервер. Выбираем „Запустить NFS-сервер“, затем „Добавить каталог“ и вводим директорию, доступ к которой другим компьютерам сети мы хотим обеспечить, потом выставляем параметры:
rw,all_squash,async,anonuid=X,anongid=Y
где X=uid пользователя, а Y=его gid. это даст доступ на чтение и запись пользователю с uid=X и gid=Y, если нужно только чтение rw нужно заменить на ro. Расшаренный каталог должен принадлежать пользователю с таким же uid и gid.
Еще можно пойти по небезопасному пути и открыть доступ вообще всем во всем мире =)
rw,insecure,all_squash
Вот и все. Закрываем яст и запускаем сервер.
#rcnfsserver start
Остановить его можно командой
#rcnfsserver stop
2.Настройка клиента
Запускаем Yast – Сетевые службы – Nfs-клиент, жмем „Добавить“, вводим ip или жмем „Выбрать“ для автоматического сканирования на предмет обнаружения Nfs-серверов, устанавливаем точку монтирования и вуаля. Запускаем
#rcnfs start
Другие дистрибутивы.
1.Настройка сервера
Сначало нужно убедится все ли пакеты установлены. Обязательно нужны nfs (может идти как отдельным пакетом, так и разбитым на несколько) и portmap. Затем открываем /etc/exports и вписываем туда расшаренные каталоги:
/ *(rw,all_squash,asynс,anonuid=X,anongid=Y)
где X=uid пользователя, а Y=его gid. Расшаренный каталог должен принадлежать пользователю с таким же uid и gid. Вместо „*“ можно указать ip или группу ip-адресов, которым разрешен доступ к каталогу, либо имя машины или группы.(если используется NIS).
Еще можно пойти по небезопасному пути и открыть доступ вообще всем во всем мире =)
/ (rw,insecure,all_squash)
Чтобы изменения вступили в силу нужно дать следующую команду:
#exportfs -arv
Теперь подправим /etc/hosts.allow, в нем указывается какие машины смогут получить доступ к nfs.
portmap: ALL
lockd: ALL
rquotad: ALL
mountd: ALL
statd: ALL
ALL открывает доступ всем, вместо нее можно написать конкретные ip.
Осталось запустить nfsd
2.Настройка клиента
Файловые системы nfs можно прописывать в /etc/fstab так же как и локальные:
:/ /mnt nfs rw 0 0
также в опции можно добавить soft или hard монтирование.
soft:
Если запрос на получение файла не выполнен, NFS клиент сообщит об ошибке процессу, который пытается получить доступ к файлу. Некоторые программы умеют это обрабатывать, большая же часть - нет. Разработчики nfs не рекомендуют использовать эту опцию; это прямой путь к повреждённым данным и потере информации.
hard:
Программа, осуществляющая доступ к файлу повиснет при смерти сервера. Процесс не может быть прерван или убит (только “sure kill”), пока вы не укажете опцию intr. Когда NFS сервер вернётся к работе, программа продолжит работу с того места, где остановилась. Разработчики NFS рекомендуют использование опций hard,intr со всеми монтируемые NFS файловые системы.
P.S. Некоторые части изложенного мною выше основываются только на теории. Удачи ;)