Обмен файлами на двух машинах
Предположим, есть некий домашний сервер-роутер, на котором, например, лежит полная коллекция фотографий, музыки, документов, и ноутбук, на котором лежат лишь избранные. Но появляются периодически новые файлы, которые нужно скидывать на сервер. Соответственно,нужен способ обмениваться файлами в обе стороны.
Итак, проблема поставлена. Осталось найти пути её решения.
Решений, как обычно, несколько. О некоторых из них я расскажу. По причине работы в последнее время исключительно под ArchLinux, рассказ будет вестись об этом дистрибутиве (настройка NFS под Slackware в целом такая же)
NFS
для настройки NFS в ArchLinux необходимо поставить пакет nfs-utils с зависимостями (portmap). Запуск демона следует производить в следующем порядке: вначале portmap, потом nfslock, а потом nfsd (или в указанном порядке вписать их в список стартующих автоматически демонов в файле /etc/rc.conf). Это важно. Файл настроек именно NFS в общем-то один, /etc/exports. Подробно про него можно узнать по адресу man exports. Вот мой файл на лаптопе:
/home/ftp 192.168.2.1(rw,async,no_root_squash,subtree_check)
В конце man exports есть несколько примеров.
Теперь задача состоит в разрешении удалённому пользователю (например, на сервере) использовать демоны на локальной машине (соответственно, на лаптопе). Если есть атмосфера полного доверия =), то в файл /etc/hosts.allow можно вписать
ALL:192.168.2.1 #server IP address
Иначе следует вписать в файл разрешение на запуск конкретных демонов:
portmap:192.168.2.1
lockd:192.168.2.1
rquotad:192.168.2.1
mountd:192.168.2.1
statd:192.168.2.1
Теперь уже дело техники. Создаём каталог /home/server, добавляем запись в /etc/fstab:
192.168.2.1:/home/ftp /home/server nfs noauto,user 0 0
После этого уже можно подмонтировать:
mount /home/server
FISH
Я недавно узнал об этом способе и мне, как большому любителю Konqueror, этот способ очень понравился. Надо установить ssh (а всякий раз, когда имеешь дело с двумя собственными компьютерами, установленный ssh - это очень удобно), то есть в ArchLinux просто установить пакет openssh. Теперь нужно добавить sshd в список разрешённых к запуску демонов так, как указано выше. Теперь в konqueror просто набираем fish://username:password@192.168.2.1 для доступа к серверу (если ввести просто fish://192.168.2.1, то у меня появляется пользователь cheer, наверное, потому что на лаптопе мой username как раз cheer)
Кажется, это самый простой способ доступа к файлам в локальной сети, минимум настроек. Существует проблема с кириллицей, если забыть про то, что можно выставлять кодировку для удалённых страниц в konqueror. Так что Tools->Select Remote Charset избавит ото всех проблем с отображением русских букв.
SHFS
SHFS требуется установить и настроить только на стороне клиента. На сервере требуется лишь запущенный sshd. В ArchLinux требуется установить shfs для вашего ядра (у меня suspend2, поэтому pacman -S shfs-suspend2) и запустить sshd на сервере. Для sshd надо опять же сделать запись в /etc/hosts.allow
При установке пакета pacman заботливо пишет:
>>> If you want to allow non-root users to mount shfs shares, you have to set
>>> suid attribute on shfsmount/shfsumount (chmod u+s).
Сие в переводе означает, что если вы хотите, чтобы обычные пользователи могли монтировать удалённые директории, надо установить suid биты на /usr/bin/shfsmount и /usr/bin/shfsumount. Это легко выполняется с помощью команд:
#chmod u+s /usr/bin/shfsmount
#chmod u+s /usr/bin/shfsumount
теперь права стали: -rwsr-xr-x root root.
Теперь можно добавить запись в /etc/fstab вида:
username@192.168.2.1:/home/ftp /home/server shfs rw,user,noauto 0 0
После введения пароля удалённый каталог окажется смонтированным.
Итоги
Мне больше всего понравился доступ по fish://, shfs - не очень, так периодически удалённый каталог отрубался. Возможно, виною мои кривые руки. NFS я пользовался достаточно давно, удобная вещь :), но для моих целей больше всего подходит именно fish.
Полезные ссылки
Февраль 27, 2007 at 12:05 пп
В некоторых случаях можно использовать http://FTP. Кому что больше нравится. На счет обзора, то мне тоже FISH понравился, но есть один вопрос. Неужели нельзя обойтись без ввода пароля прямым текстом в строке браузера? После этого, пароль так и светится в кеше. Я не знаю точно принципа работы этого протокола. У меня был уже настроен SSH с доступом по ключам. Поэтому, набрав в браузере лишь IP:порт я без проблем зашел.
Февраль 27, 2007 at 12:09 пп
ну да, я хотел про FTP написать, но потом понял, что в сети этого навалом и писать не стал :)
Можно пароль не вводить, тогда вывалится окно с просьбой его ввести. Или использовать ssh ключи. Но с последним я ещё не разбирался.
ssh ключи на ArchWiki
Февраль 27, 2007 at 3:22 пп
Про NFS - нужно быть внимательным /etc/exports синтаксис в этом файле значительно отличается для линксов и bsd.
Февраль 27, 2007 at 3:39 пп
Касательно автоматизации поставленной задачи ;-)
Я для того что бы делать бэкап своего сайта на локальную машину пользуюсь rsync. Работает он поверх ssh
Выглядит это примерно вот так.
rsync -arvzu –delete –exclude “*/data/cache/*/*” user@host:~/public_html/dir-to-backup .
Возможностей у rsync выше крыши, так что можно настроить под свою задачу.
Кстати, rsync прекрасно синхронизирует и локальные папки. Умел бы он ещё ftp, цены бы ему не было =)
Февраль 27, 2007 at 4:04 пп
http://wiki.archlinux.org/index.php/Sync_laptop_desktop
там есть небольшой рассказ про три приложения: unison, caveats и rdiff-backup
Но, судя по всему, они тоже ftp не поддерживают…
Февраль 27, 2007 at 4:27 пп
Про NFS познавательно, всё хочу его поднять, до лениво. Надо будет побороть это в себе и таки пощупать NFS :-)
Февраль 28, 2007 at 12:56 дп
http://wiki.archlinux.org/index.php/Sync_laptop_desktop - я что-то себе представить не могу зачем нужно настолько глубоко синхронизировать лаптоп и десктоп, если они работают, именно работают, а не интернет смотрят, то каждый нужно будет настраивать отдельно, удобнее держать все нужные данные и документы где-то в одном месте и по ssh или nfs их оттуда забирать и место экономится и все сразу синхронизировано в одном месте, примонтировал серверный экспорт и делай с ним что хочешь на внутрисетевых скоростях… другая проблема, что основной компутер может быть не включен, тогда можно будет сохранять информацию на локальной фс, а потом отсылать на основной компутер. И что характерно с минимальными затратами - нужен запущенный portmap и mountd :)
Февраль 28, 2007 at 1:52 дп
Может, человеку синхронизироваться нравится… В чём-то я его прекрасно понимаю…
Я так и делаю, сборище пакетов для ArchLinux храню в одном месте (на лаптопе), периодически подключаю разнообразные машины к лаптопу и скидываю на них пакеты (ну да, знаю, что есть rucksack, ещё что-то, но пока и без них обхожусь). И синхронизация была бы очень удобной (опять же пока не до неё).
Хотя, насколько я понял, товарищ по ссылке чуть ли не /etc синхронизирует =)
Февраль 28, 2007 at 10:53 дп
SCP по моему самый удобный способ. SSH поднят практически везде. У нас на работе он основной и что то более удобное придумать сложно.
Пользовать его можно как и в коммандной строке так и в GUI (Nautilus поддерживает, Konqueror не знаю, но наверно тоже)
Февраль 28, 2007 at 11:50 дп
fish в Konqueror’е - это и есть SCP, если я правильно понимаю. sftp, кстати, в Konqueror’е тоже есть…
Февраль 28, 2007 at 11:54 дп
Вот ещё хорошее, подробное руководство на русском:
http://www.rhd.ru/docs/manuals/enterprise/RHEL-4-Manual/sysadmin-guide/s1-openssh-client-config.html
А раньше ещё был telnet, но, кажется, из-за проблем с безопасностью он в настоящее время практически не используется.
Февраль 28, 2007 at 1:25 пп
для OpenBSD есть OpenSSH - нужно будет разобраться…
Февраль 28, 2007 at 4:20 пп
Так а это же одно и тоже, разве нет?
Март 2, 2007 at 3:00 пп
Igor, телнет просто совершенно тупая штука, которая коннектится к определённому порту и показывает принятые данные, а с клавиатуры туда передаёт… Всё идёт открытым текстом. Я его, кстати, активно использую для тестирования разных сервисов =)
Март 5, 2007 at 3:25 пп
для OpenBSD есть OpenSSH - нужно будет разобраться…
OpenSSH был создан командой OpenBSD как альтернатива SSH, который все еще является закрытым ПО. Когда говорят о SSH в Linux, то скорей всего подразумевают именно OpenSSH.
Март 6, 2007 at 10:47 дп
“Теперь в konqueror просто набираем fish://username:password@192.168.2.1 для доступа к серверу” - можно набрать без :пароля, что-бы не светить его, система его спросит сама
Апрель 9, 2007 at 8:30 дп
[...] linux in cheer’s eyes linux and IT « Обмен файлами на двух машинах [...]
Июль 12, 2007 at 5:20 дп
“… shfs - не очень, так периодически удалённый каталог отрубался.”
Наверно, помогло бы указание в fstab опции persistent:
“username@192.168.2.1:/home/ftp /home/server shfs rw,user,noauto,persistent 0 0″