Воскресенье, 19.05.2024, 12:54
Приветствую Вас Гость | RSS
Мой сайт
Главная
Регистрация
Вход
Форма входа

Меню сайта

Категории раздела
Об ОС Windows [137]
В категории размещаются статьи, касающщиеся операционных систем от Microsoft.
Об ОС *Nix [198]
В данной категории собраны статьи об ОС семейства Unix/Linux/FreeBSD/...
Справочные материалы [351]
Справка по всему разделу.
Виртуализация и Облака [46]
Networks & Routing [86]
DataBases [22]

Наш опрос
Оцените мой сайт
Всего ответов: 209

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Системное администрирование » Об ОС *Nix

FTPFS или что можно сделать на базе FUSE

FTPFS или что можно сделать на базе FUSE

Скопирую на будущее. Вдруг пригодится опять.

Владелец одного из серверов, администрированием которого занимается наша компания, поставил такую забавную задачу. На его сервере присутствует громадный ftp-архив (2 storage по 6 ТБ каждый на данный момент). Неподалеку от этого сервера стоит другой сервер, на котором есть тоже интересный архив, причем постоянно обновляемый. Необходимо было сделать так, чтобы архив второго сервера стал как бы частью ftp-архива нашего сервера. При этом копировать данные с сервера на сервер не допускалось (ну там, дублирование информации и все такое).

Задача усложнялась тем, что на втором сервере стоит FreeBSD и ручек от его администрирования нам, естественно, никто не дал. После небольшого гугления было найдено 2 варианта решения данной проблемы:

  1. sshfs. то есть файловая система, работающая поверх ssh через FUSE (Filesystem in USEr space)
  2. ftpfs, то есть то же самое, но только работающее поверх ftp

Выбор был сделан в пользу ftpfs. Во-первых, очевидно что протокол ftp будет работать быстрее чем ssh, т.к. соединение не шифруется. Во-вторых, оба сервера находятся на одном и том же узле связи, никакой особой безопасности тут не требуется, тем более что второй сервер вообще разрешает анонимный доступ по ftp. Да, забыл добавить немаловажный факт: между серверами гигабитная сетка.

Итак, решение выбрано, приступаем к настройке. Первым делом, установим необходимые пакеты:
apt-get install curlftpfs
все, что нужно, debian скачает и установит сам. Дальше нужно создать точку монтирования (куда собственно подключать удаленный ftp):
mkdir /home/ftp/cool-ftp
chown user:group /home/ftp/cool-ftp

Монтируем ftp-шник:
curlftpfs ftp://ftp.host.ru/ /home/ftp/cool-ftp/ -o ro,allow_other,uid=user,gid=gro
Собственно, вот и всё. Почти :) Дело в том, что нормальные админы не занимаются развешиванием соплей, отваливающихся при ребуте сервера, а приколачивают все гвоздиками. В нашем случае, нужно прописать соответствующую строчку в /etc/fstab, чтобы при загрузке нашего сервера, ftp-шник подмонтировался автоматом. Делается это очень просто, путем добавления в /etc/fstab вот такой строчки:
curlftpfs#anonymous:@ftp.host.ru /home/ftp/cool-ftp/ fuse ro,allow_other,uid=user,gid=group 0 0 
Разумеется, так же полезно добавить строчку "fuse" в файл /etc/modules, чтобы модуль fuse был автоматом загружен в ядро.
Да, чуть не забыл добавить. Не знаю почему, но uid=user,gid=group у меня на самом деле не работало. Вместо этого я написал uid=1001 (цифровой идентификатор юзера user, который можно получить, выполнив id -u user) и, соответственно, gid=...

Еще, кстати, полезно сделать вот так:
ln -s /usr/bin/curlftpfs /sbin/mount.curlftpfs
чтобы можно было монтировать файловые системы типа curlftpfs обычной командой mount -t curlftpfs

P.S. После некоторого времени эксплуатации выяснилось, что система ведет себя не совсем стабильно: периодически процессы ftpfs зависали на команде LIST. Поэтому в итоге мы таки откатились на sshfs. Делается это не менее просто:

  1. Генерируем rsa-ключ для ssh для того пользователя, которым мы ходим на удаленный хост, то есть в нашем случае это root:
    ssh-keygen -t rsa
  2. Прописываем этот ключ, который лежит в файле ~/.ssh/id_rsa.pub на удаленном хосте в файл ~/.ssh/authorized_keys2
  3. В /etc/fstab добавляем строчку:
    sshfs#ftp.host.ru:/home/ftp/public/ /home/ftp/cool-ftp/ fuse ro,allow_other,uid=user,gid=group 0 0

Полный формат первого аргумента выглядит так: sshfs#user:pass@ftp.host.ru:/home/ftp/public/ но мы, разумеется, логин и пароль сюда не пишем, т.к. пользуемся ключами.
Ну и наконец, монтируем:
mount -a

Оригинал (Халиков Антон)



Источник: http://comnote.blogspot.com/2009/10/ftpfs-fuse.html
Категория: Об ОС *Nix | Добавил: admin (09.10.2011)
Просмотров: 1332 | Комментарии: 1 | Теги: ftpfs, curlftpfs, fuse, config, sshfs | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024