монтирование ftp в linux
Монтирование файловой системы FTP в linux
Иногда нужно, чтобы FTP аккаунт был всегда под рукой, а вернее отдельным каталогом вашей файловой системы. В linux это делается с помощью пакета curlftpfs, при этом в ядре должна быть включена поддержка FUSE (во всех современных ядрах она есть, если вы только не пересобирали ядро сами :))
На официальный сайте проекта curlftpfs можно найти исходники программы, но практически во всех репозиториях она есть и исходники вам врядли понадобятся.
В ubuntu/debian ставим с помощью команды
На всякий случай подгружаем модуль ядра fuse (в разных дистрибутивах модуль может подгружаться и автоматом при задействовании системы FUSE)
Теперь можно и примонтировать ftp в какой-нибудь каталог, например /mnt/ftp
Следующие команды выполняем от sudo или суперпользователя
после набора пароля пользователя ftp в каталоге /mnt/ftp будет отображаться содержимое ftp с правами пользователя ftp.
Чтобы не набирать пароль, можно его указывать в команде подключения
Внимание: Так я делать не рекомендую по соображениям безопасности, т.к. команды обычно логируется в history или могут быть подсмотрены. Но если очень надо создать автоматическое монтирование ftp ресурса, тогда рекомендую создать скрипт с данной командой подключения и выставить на него права 600.
Чтобы монтировать ftp от обычного пользователя, надо дописать/расcкомментировать в файле /etc/fuse.conf (если файла нет, то создать) строку
и монтировать уже командой от обычного пользователя
Если надо примонтировать только 1 подкаталог с главного корня ftp, достаточно просто указать относительный путь этого каталога.
Например в корне ftp есть каталог temp, который нам надо примонтировать. Тогда команда монтирования будет выглядеть:
Для монтирования ftp на уровне загрузке системы можно занести монтирование в файл /etc/fstab, подставив свои значения
Можно посмотреть в какую директорию смонтированы все файловые системы компьютера, в частности curlftpfs.
Из недостатков монтирования я заметил, что данная команда неправильно показывает занятое/свободное место на ftp.
Монтирование ftp в linux
Как в ubuntu (линукс) смонтировать FTP как локальную папку
Монтируем ftp-сервер как локальную папку на вашем локальном компьютере под управлением операционной системы Linux
Для работы с файлами находящимися на FTP сервере как с локальными необходимо установиться программу CurlFtpFS.
Установка CurlFtpFS.
# sudo aptitude install curlftpfs
Настраиваем CurlFtpFS для подключения к FTP:
Можно еще сделать что бы ваш FTP Монтировался как автоматически при загрузке системы. Для этого требуется отредактироваться файл /etc/fstab
Добавляем в него строчку
curlftpfs#ftpUser:ftpPass@ftp://ftpHost /localDirectory fuse rw,uid=1000,umask=0777,user,suid,allow_other,exec,auto,utf8 0 1
В этой строчке надо заменить значения выделенные жирным шрифтом на свои.
Перезагрузить компьютер или запустить команду которая перемонтирует все диски
Еще можно сделать что бы ваш FTP-сервер монтировался при загрузке компьютера как диск.
Для Этого редактируем файл /etc/rc.local
Вставьте этот код, предварительно изменив в нём логин, пароль и хост для вашего FTP, аналогично примеру выше, перед строчкой «exit 0»:
До самых костей мозга
Работа с FTP как с локальной папкой. CurlFtpFS
Как установить
В пример буду приводить набирающую обороты Ubuntu, как систему для простых пользователей.
Набираем в консоли от имени суперпользователя:
apt-get install curlftpfs
Чтобы не делать все операции от суперпользователя, добавим текущего юзера в группу fuse и установим нужные права на целевой каталог:
adduser имя_пользователя fuse
chgrp fuse /media/ftp
chmod g+w /media/ftp
Как использовать
curlftpfs ftp://[пользователь]:[пароль]@имя_сервера /media/ftp [опции]
мне второй вариант нравится больше.
Настраиваем кодировки
Не забываем, что многие сервера создаются для виндуз-пользователей. Встроенный в винду FTP-клиент знает только одну кодировку: windows-1251, и именно в этой кодировке подобный FTP-сервер будет передавать имена файлов.
Соответственно, так как у нас utf8, вместо русских имён мы увидим абракадабру. И наоборот: при создании файла с русским именем, абракадабру увидят виндуз-пользователи.
Чтобы этого избежать, дописываем в опции соединения: codepage=windows-1251 (указываем какая кодировка используется на сервере) и iocharset=utf8 (указываем какая кодировка у нас, можно не писать).
Или делаем то же, но используя модуль iconv, что правильнее:
Другие настройки
Мой местный интернет-провайдер держит анонимный FTP-сервер. Его поддерживают замечательные администраторы, он до сих пор не понимает маленькую букву «я» в названиях файлов. Но дело даже не в этом.
Скорость заливки/скачивания на этом сервере не ограничена. Но! При попытке открыть несколько FTP-сессий, скорость на несколько минут падает до нескольких килобайт в секунду. С учётом, что на дворе 21 век, 2010 год, параллельные вычисления и нанотехнологии, считаю такой подход замечательным.
Автомонтирование при запуске
Для автомонтирования ресурса при каждом запуске, добавим следующую строчку в файл /etc/rc.local :
Отмонтируем
От имени текущего пользователя. Или, если хочется поизвращаться, то от имени суперпользователя:
Ссылки
Опция fsname= поможет скрыть эти данные.
Логин и пароль засвечиваются только в том случае, если писать их в URI для подключения.
Если передать их опциями (-o user=login:password), то всё будет хорошо.
Автоматизировать ввод пароля можно через стандартный
/.netrc файл (man netrc):
machine ftp.test.ru
login логин
password пароль
curlftpfs#ftp.host.com /mnt/host fuse rw,uid=500,user,noauto 0 0
Совет: Перед изменением /etc/fstab — проведите монтирование вручную, после чего выполните команду mount (или cat /etc/mtab).
Источник и назначение монтирования надо будет внести в fstab согласно этому выводу, с точностью до символа.
Полезные опции:
noauto — не монтировать при загрузке;
uid=# — идентификатор владельца (кому нужно заходить на подмонтированный ресурс);
_netdev — указание, что ресурс сетевой.
Комментарии
После этого в нашей папке /media/ftp появляются все файлы что лежат на сервере?
После этого в нашей папке /media/ftp появляются все файлы что лежат на сервере?
Это монтирование. После монтирования мы можем зайти в этот каталог и оперировать с файлами так, как будто они находятся на локальном диске. В этом смысле можно сказать «появляются», да.
Но в папку ничего не копируется, физически файлы находятся всё так же на удалённом FTP-сервере.
Супер! Получилось.
А я могу теперь синхронизировать папку /media/ftp с какой-нибудь другой папкой на компьютере?
Просто моя IDE-программа надолго зависает если я открываю файл непосредственно из папки /media/ftp и начинаю редактировать.
А я могу теперь синхронизировать папку /media/ftp с какой-нибудь другой папкой на компьютере?
А смысл?
Если синхронизировать, то лучше непосредственно с FTP.
Просто моя IDE-программа надолго зависает если я открываю файл непосредственно из папки /media/ftp и начинаю редактировать.
Периодически и не со всеми серверами есть такая хрень. Плюс, иногда выползают ошибки ввода-вывода, input/output error. Из-за чего не знаю, у меня разобраться пока не получилось.
Говорят, косяк в текущей версии, для исправления советуют откатиться на предыдущую. Подробнее здесь: http://www.it-simple.ru/?p=4893
Если на FTP нет файлов с русскими именами или они хранятся в кодировке UTF-8, можно подмонтировать прямо через наутилус.
Содержимое удалённого сервера будет в каталоге
Как эксперт, дайте ваш совет по реализации синхронизации двух папок в убунте, с автозапуском этой самой синхронизации при изменении(или при каком-нибудь другом условии) любого содержимого в этих папках, причем в двустороннем направлении.
Искал программу которая могла бы это делать но так и не нашел ничего подходящего для себя (ввиду того что на линукс пересел неделю назад, консольные программы для меня еще пока как тропические леса амазонки, хотя по инструкции иногда получается).
Выполнимая ли это задача?
Извиняюсь что ушел немного от темы.
дайте ваш совет по реализации синхронизации двух папок в убунте, с автозапуском этой самой синхронизации при изменении(или при каком-нибудь другом условии) любого содержимого в этих папках, причем в двустороннем направлении.
Искал программу которая могла бы это делать но так и не нашел ничего подходящего для себя (ввиду того что на линукс пересел неделю назад, консольные программы для меня еще пока как тропические леса амазонки, хотя по инструкции иногда получается).
Выполнимая ли это задача?
Задача выполнимая. У линухов как у ОС невыполнимых задач вообще, по-моему, нет. Более того, одну и ту же задачу можно решить огромным количеством способов. Иногда это вгоняет в ступор, не знаешь что выбрать.
Для синхронизации содержимого двух папок отлично подходит rsync.
Умеет синхронизировать в обе стороны, как по косвенной информации (размер, дата создания), так и по контрольным суммам файлов.
У меня пример использования можно найти здесь (хотя это не совсем то, что нужно): http://www.it-simple.ru/?p=3961
Отличный мануал на русском: http://www.opennet.ru/man.shtml?topic=rsync
У неё есть графическая морда: grsync.
Морда, он же фронтэнд, это графическая оболочка для консольной утилиты. Позволяет задать настройки из графики, вывод информации делает в графику, но по сути представляет собой всего лишь надстройку над основной (консольной) программой.
apt-get install grsync достаточно, он поставит вместе с собой и сам rsync.
Если нужно засунуть задание в планировщик, можно поступить следующим образом: сделать настройки в графике, подсмотреть сформированную строку запуска rsync и кинуть её в crontab.
Но, я так понимаю, речь всё-таки идёт про синхронизацию файлов между локальным каталогом и FTP-сервером. Вручную это удобно делать с помощью FileZilla. Это двухпанельный FTP-менеджер, умеет делать синхронизированный просмотр локального и удалённого каталогов (то есть, ходишь одновременно по хранилищу и его копии), есть режим сравнения файлов. Как таковой синхронизации в нём не существует, но можно настроить копирование только изменённых файлов.
Ну, это если так, вкратце и сходу.
Fradis
В прошлом годы был на Ибице, так там познакомился с человеком, у которого стиль изложения материала очень похож на ваш. Но, к сожалению, тот человек очень далек от Интернета.
Strek
Strek
Скорее всего, один из символов пароля был служебным.
И, скорее всего, в кавычки достаточно заключить только пароль.
kirill
а что делать если disk на ftp сервере fat32?
#cid73997, kirill
а что делать если disk на ftp сервере fat32?
С какой стороны (пользователь или администратор сервера)?
И что это за сервер такой загадочный?…
ЗЫ: Обыкновенно, как в случае стандарта де-факто на файловую систему для сменных носителей (то есть глобально эмулировать посредством опций монтирования).
#cid73997, kirill
а что делать если disk на ftp сервере fat32?
Не понял. А какая разница, какая ФС на серверном диске? Хочется приключений — пусть будет FAT32.
При запросе файла по FTP команда поступает FTP-серверу, который представляет собой демон. Демон запросит файл у операционной системы, на которой он вращается. И только ОС обратится к файлу непосредственно, через драйвер соответствующей ФС.
Таким образом, FTP-серверу глубоко насрать на то, в какую файловую систему отформатирован диск. Он тупо не работает с файлами на этом уровне.
Насколько я знаю, копирование файлов по FTP происходит через каталог временных файлов. Почему так — хз, но копни в эту сторону. Может, причина задержки в этом.
Виталий
Виталий
Если вы видите эту надпись,
значит, новый движок уже в работе
и страница отображается с помощью него.
Техническая информация
Время подготовки страницы: 0.002947 c.
Кэш: частичный.
Русские Блоги
Монтирование FTP-сервера с помощью curlftpfs под Linux и возникшие проблемы
Смонтируйте FTP сервер с curlftpfs под Linux
1. Установите curlftpfs
1.1 Установить DAGrepository
Поскольку система CentOS не может напрямую использовать yum install curlftpfs для установки curlftpfs, сначала необходимо установить репозиторий DAG
1.2 Установите curlftpfs: yum install curlftpfs
2. Смонтируйте ftp сервер
2.1 Эффект:/ home / ftp_test на ftp-сервере отображается в каталог / home / b / doc2 системы b
2.2 Ошибка:
Выполните следующую команду в системе b, предложив «сервер отказал вам в переходе в данный каталог»
Причина ошибки:
Неправильный путь пользователя ftp_test на ftp-сервере: выполните команду cat / etc / passwd на ftp-сервере, вы можете видеть, что по умолчанию путь пользователя ftp_test равен / home / ftp_test, поэтому путь пользователя ftp_test становится / home / в предыдущей команде ftp_test / home / ftp_test
Исправление:
Повторно введите следующую команду в системе b, монтирование прошло успешно
Эффект:
В каталоге / home / b / doc2 системы b вы можете увидеть файлы в каталоге ftp server / home / ftp_test
2.3 Подробные параметры команды:
кодовая страница: кодировка
имя пользователя: имя пользователя FTP
пароль: пароль FTP
192.168.1.111: адрес FTP
/ ftp: путь для подключения к
Открытый доступ
Чтобы другие пользователи могли читать и писать, uid и gid изменились на ваш собственный идентификатор
sudo curlftpfs –o rw,allow_other,uid=0,gid=0 ftp:// username: password @192.168.1.111 /ftp
Среди них: Следующие команды могут быть использованы для просмотра uid и gid:
Вы можете определить свой uid и gid, просмотрев файл / etc / passwd
2.4 Авто монтирование при загрузке
Добавьте в конец файла / etc / fstab системы xb:
2.5 Снять крепление
В системе b: выполните следующую команду
заметки системного администратора
заметки по IT технологиям: просто о сложном
Работа с FTP как с локальной папкой. CurlFtpFS
Как установить
В пример буду приводить набирающую обороты Ubuntu, как систему для простых пользователей.
Набираем в консоли от имени суперпользователя:
apt-get install curlftpfs
Чтобы не делать все операции от суперпользователя, добавим текущего юзера в группу fuse и установим нужные права на целевой каталог:
adduser имя_пользователя fuse
chgrp fuse /media/ftp
Как использовать
curlftpfs ftp://[пользователь]:[пароль]@имя_сервера /media/ftp [опции]
мне второй вариант нравится больше.
Настраиваем кодировки
Не забываем, что многие сервера создаются для виндуз-пользователей. Встроенный в винду FTP-клиент знает только одну кодировку: windows-1251, и именно в этой кодировке подобный FTP-сервер будет передавать имена файлов.
Соответственно, так как у нас utf8, вместо русских имён мы увидим абракадабру. И наоборот: при создании файла с русским именем, абракадабру увидят виндуз-пользователи.
Чтобы этого избежать, дописываем в опции соединения: codepage=windows-1251 (указываем какая кодировка используется на сервере) и iocharset=utf8 (указываем какая кодировка у нас, можно не писать).
Или делаем то же, но используя модуль iconv, что правильнее:
Другие настройки
Мой местный интернет-провайдер держит анонимный FTP-сервер. Его поддерживают замечательные администраторы, он до сих пор не понимает маленькую букву «я» в названиях файлов. Но дело даже не в этом.
Скорость заливки/скачивания на этом сервере не ограничена. Но! При попытке открыть несколько FTP-сессий, скорость на несколько минут падает до нескольких килобайт в секунду. С учётом, что на дворе 21 век, 2010 год, параллельные вычисления и нанотехнологии, считаю такой подход замечательным.
Автомонтирование при запуске
Для автомонтирования ресурса при каждом запуске, добавим следующую строчку в файл /etc/rc.local :
где пользователь – имя локального пользователя, от которого запустится curlftpfs.
Отмонтируем
От имени текущего пользователя. Или, если хочется поизвращаться, то от имени суперпользователя:
Ссылки
После монтирования выполните команду df, о ужас – по умолчанию в таблице монтирования
имя файловой системы присваивается следующего вида:
Опция fsname=поможет скрыть эти данные.
Логин и пароль засвечиваются только в том случае, если писать их в URI для подключения.
Если передать их опциями (-o user=login:password), то всё будет хорошо.
Автоматизировать ввод пароля можно через стандартный
/.netrc файл (man netrc):
curlftpfs#ftp.host.com /mnt/host fuse rw,uid=500,user,noauto 0 0
Совет: Перед изменением /etc/fstab — проведите монтирование вручную, после чего выполните команду mount (или cat /etc/mtab).
Источник и назначение монтирования надо будет внести в fstab согласно этому выводу, с точностью до символа.
noauto — не монтировать при загрузке;
uid=# — идентификатор владельца (кому нужно заходить на подмонтированный ресурс);
_netdev — указание, что ресурс сетевой.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.