Монтируем FTP ресурс как локальную FS

    Захотелось как-то исполнить команду find в ftp-пространстве, но любой нормальный ftp сервер этого не даст сделать, а решение ну очень хотелось найти.

    Вот и был обнаружен curlftpfs:

    $ aptitude show curlftpfs
    Пакет: curlftpfs
    Состояние: установлен
    Автоматически установлен: нет
    Версия: 0.9.2-1
    Приоритет: необязательный
    Раздел: utils
    Сопровождающий: Ding Honghui <hhding@vobile.cn>
    Размер в распакованном виде: 111k
    Зависимости: libc6 (>= 2.7-1), libcurl3-gnutls (>= 7.16.2-1), libfuse2 (>= 2.6), libglib2.0-0 (>= 2.12.0), fuse-utils
    Описание: filesystem to access FTP hosts based on FUSE and cURL
     CurlFtpFS is a tool to mount FTP hosts as local directories. It connects to a FTP server and maps its directory structure to the local filesystem. 
     
     Based on FUSE (filesystem in userspace) and the cURL library, CurlFtpFS has some features that distinguish it over other FTP filesystems: 
     * support for SSLv3 and TLSv1 
     * connecting through tunneling HTTP proxies 
     * automatic reconnection if the server times out 
     * conversion of absolute symlinks to point back into the FTP filesystem
    Сайт: http://curlftpfs.sourceforge.net

    С помощью этого замечательного средства можно выполнить практически любую операцию с ftp-ресурсом.

    Для начала установим пакет:

    $ sudo aptitude install curlftpfs

    Затем подмонтируем интересующий нас ftp-ресурс:

    $ mkdir temp-ftpfs
    $ curlftpfs ftp://$USER:$PASSWD@$HOST/ temp-ftpfs
    $ cd temp-ftpfs
    $ ls
    $ find / -name '*.txt'

    Всё очень просто.

    А вот отномнтировать получится только с root'овыми правами:
    $ sudo umount curlftpfs#ftp://$USER:$PASSWD@$HOST/

    Отмонтировать можно так:

    $ fusermount -u temp-ftpfs


    PS: Вольный перевод, с некоторыми дополнениями, статьи с Debian Administration.
    ЗЫ: На мой взгляд удобнее использовать sshfs, но если нет доступа по ssh тогда и вышеуказанный метод на что-нибудь да сгодится.
    Поделиться публикацией

    Похожие публикации

    Комментарии 43

    • НЛО прилетело и опубликовало эту надпись здесь
        +8
        А вот отномнтировать получится только с root'овыми правами:

        Для fuse файловых систем (curlftpfs, sshfs и др.) используется команда fusermount -u mountpoint
          +7
          С помощью этого замечательного средства можно выполнить практически любую команду на ftp-ресурсе.
          Не вводите в заблуждение. Можно выполнить практически любую операцию с файлами. Разницу объяснять, надеюсь, не нужно.
            0
            Не нужно… Это вольный перевод… Поправил…
              0
              В названии все равно написано любых shell команд. Мне кажется это тоже вводит в заблуждение
                0
                Меня ввело в заблуждение.
            +2
            Весьма неплохо. Но…
            Как сделать, чтобы не светить логины/пароли/хосты в выводе df понятно (-o fsname=), а вот, чтобы не светить в списке процессов неясно как :(
              +2
              всё. 'man netrc' спасает ;)
              0
              У меня уже месяца 2 как через curlftpfs подключены все локальные ftp моего провайдера.
                +4
                Назвали бы статью «Монтируем FTP ресурс как локальную FS», а то пользы от возможности запуска любых комманд в такой констилляции очень мало
                Если find ещё с горем пополам будет работать то grep и любая операция требующая чтения/записи а не листинга данных будет чудовищно медленной
                  0
                  Если есть возможность, посмотрите в сторону sftp
                  А ftp давно пора отправить на пенсию.
                    –1
                    А знаете ли Вы хотя бы 4 клиента под каждую из популярных операционных систем, которые бы нормально с ним работали?
                    Ой, а анонимно тоже можно скачать?
                      +2
                      Linux работает нативно с sftp, у KDE и Гнома поддержка на уровне виртуальных файлоывых систем.
                      Windows — WinScp + видел плагин к TotalCommander
                      MacOS — тоже думаю с поддержкой проблем не должно быть.

                      Вам требуются shell команды при работе с анонимными ftp серверами?
                      На мой взгляд целесообразней файлопомойку раздавать через http.
                      Я не говорю о том что фтп нельзя использовать ни при каких обстоятельствах, но зачастую это лишь дань традиции.

                      Плюсы sftp:
                      + sftp это посути подпротокл ssh, наследующий безопастность и многое другое
                      + безпарольная авторизация по ключам
                      + нативное сжатия трафика (при необходимости)
                      + команды позволяющие оперировать файлами удалённо
                      + отсутствие активного режима и проблем с ним связанных
                      + нет необходимости ставить дополнительный демон, всё работает через sshd
                      + лучшая устойчивость на нестабильном и медленном соединении (субъективно)
                      + быстрая работа с большим количеством мелких файлов.

                      Минусы:
                      — маленькая производительность на больших скоростях из-за шифрования
                      — сложность организации chroot (блокирование бользователя в домашнем каталоге) в случае когда это необходимо
                        0
                        сложность организации chroot

                        так все-таки можно организовать полноценный chroot (aka jail для ftp) для пользователей ssh? Подскажите, как?
                          +1
                          Опция ChrootDirectory в конфиге.
                          Я так однажды свой домашний роутер потерял.
                            –1
                            вот я ламо! Спасибо.
                            Я как-то лет 5 назад морочил голову этой задачкой, не нашел решения. Правда ssh-сервер был под WIN.
                              0
                              под unix давно есть rssh

                              rssh is a restricted shell, used as a login shell, that allows users to perform only scp, sftp, cvs, rdist, and/or rsync operations. It can also
                              optionally chroot user logins into a restricted jail.
                              0
                              посмотрел changelog openssh, только в 2008 появилась эта опция, проглядел я.
                            –2
                            Очень хотелось бы посмотреть на технологию обучения сферического пользователя в вакууме следующим вещам:
                            • установка WinSCP или TC с плагином (они же один другого гаже!)
                            • генерация ключа и распространение его на часто посещаемые сервера
                            • докачка не скачавшихся из-за обрыва соединения файлов

                            К чему это я… Всему свое место. SFTP — всего лишь костыль над популярной в юниксах технологией, следует его воспринимать как способ без заморочек перекинуть файл с одной своей машины на другую свою машину.
                            Протокол FTP вполне справляется с задачей обмена файлами. Его шифрованный брат FTPS — тоже. И незачем заворачивать это дело в Shell over SSL, если оно и так с SSL работает.
                            Чем проще система, тем реже она ломается.
                              +1
                              Установка WinSCP ничуть не сложнее чем любого ftp клиента.
                              Ключи атрибут не обязательный, парольную авторизайию никто не отменял
                              Докачка в sftp помойму есть по дефолту.

                              SSH != Shell over SSL
                              А вот FTPS это 2 не связанных между собой протокола.
                              В данном случае я предлагаю использовать 1 демон вместо 2х, куда проще то?
                                –2
                                Установка, в отличие от любого браузера, работающего с FTP из коробки, требует дополнительных действий.
                                SSH was designed as a replacement for Telnet and other insecure remote shells В первую очередь шелл, остальное — костыли.
                                хватит меня кормить
                                Докачки в мане не нашел.
                                про SSL да, я неправ — смутила линковка. Тем не менее, шифрованный транспорт там не может не присутствовать.
                                у FTPS примерно та же структура. А вот SFTP — с лишним звеном в виде Shell.
                                  0
                                  sftp не является костылём, т.к. он является расширением протокола, заточенным под исполнение своих прямых функций — а именно передачи файлов.

                                  ssh из защищенного шела давно превратился в целое семейство смежных протоколов и представляет собой эдакий швейцарский нож. Причем замечательно выполняющий очень много различных задач!

                                  это:
                                  *ssh
                                  *sftp
                                  *X11 forwarding
                                  *проброс портов
                                  *тунелирование виртуальных сетевых устройств

                                  Нащет докачки — просто проверьте как-нибудь, она просто работает. По крайней мере на тех клиентах что я пробовал.

                                  PS не видел ни одного сервера на котором был бы установлен ftp но не был установлен ssh
                                    0
                                    докачка по ssh? Пролистал ман по scp, ничего подобного не нашел. Тем более стандартная связка cat file | ssh -l [user] [host] 'cat > ~/file'. Так интернет у меня сейчас ужасный, очень интересует этот вопрос.
                                      0
                                      я говорил про sftp а не про ssh или scp

                                      Цитата с XGU:
                                      В сравнении с другим протоколом, тоже предназначенным для копирования файлов поверх SSH — протоколом SCP, который позволяет только копировать файлы, SFTP даёт возможность выполнять намного больше операций с ними: например, докачивать файл после разрыва соединения или удалять файл на сервере и многие другие операции. По этой причине существуют графические и псевдографические клиенты для SFTP, но нет таких, кто использовал бы только SCP в чистом виде.
                                      www.xgu.ru/wiki/SFTP
                                +1
                                Filezilla тоже исправно работает. А настройка совсем не отличается от ftp версии.
                                И по ключам и без.
                                  0
                                  Именно.
                                  И под Win, и под Linux.
                          0
                          Когда я развлекался с этой штукой года 3 назад, она безбожно текла. Как сейчас обстоят дела с памятью после недели активного использования одного FTP-сервера таким способом?
                            +2
                            По названию можно подумать, что эти команды можно исполнить на любом удаленном сервере…
                              0
                              половина статьи — это вывод команды aptitude. Неужели своими словами нельзя это написать?
                                0
                                По своим наблюдениям, штука весьма мерзостная. Если произойдет например разрыв FTP-соединения, то все процессы, так или иначе к каталогу обращавшиеся, останутся надолго висеть в ожидании операции ввода-вывода (или в state Dead, если их попытаться прибить).
                                Мне кажется, что sshfs с этой точки зрения намного лучше. Хотя, не являясь экспертом по FUSE и компании, допускаю, что просто те люди, что предоставляют ssh, помимо стандартного ftp, сами по себе намного лучше.
                                  –1
                                  sshfs также нагло висит :(
                                    0
                                    kill sshfs — и блокировка I/O, превращающая процесс в uninterruptible пропадет (после чего он должен сам отвиснуть)
                                      0
                                      killall
                                        0
                                        killall убьет все соединения, включая независшие. Или вы хотите сказать, что sshfs-процессы зависают скопом? (не проверял)
                                          0
                                          Я хочу сказать, что команде kill передается pid процесса, а не его имя.
                                          А по имени процесса убивает команда killall
                                    –1
                                    Да и с NFS такая же фигня…
                                      –1
                                      Очевидно вы даже не потрудились прочитать man nfs и уже клевещете. Ознакомтесь пожалуйста с опцией soft.
                                    –1
                                    Ждем от автора топика на главной про autofs внезапно найденной в репазитории
                                      0
                                      ставил на сервер месяц назад curlftpfs, через него backup делался, во время каждой передачи занимал памяти на объем передаваемых файлов и не освобождал ее.
                                      в листе рассылки на проблемы с памятью от автора нашел:
                                      Hello Dag, I'm afraid I have no relevant coding skills, so if upstream isn't
                                      willing to fix it, there's nothing I can do.
                                        –1
                                        Не хочу показаться занудой, но почему почти во всех статьях фигурирует "$ sudo aptitude install xxx", "$ sudo apt-get install xxx" и т.д.? Вы пишете специфичную для конкретной ОС статью? Зачем? Можно просто написать «установим такую-то программу», указать ссылку на сайт программы или на sourceforge. Эдакой универсальности надо.
                                          0
                                          кто-то пишет yum, кто-то rmp, а кто-то aptitude, apt-get… какая, собственно, разница? ;)
                                          кому надо те действительно найдут, соберут, установят.
                                          а кто так, мимо проходил… а какая им тогда, собственно, разница? ;)
                                          0
                                          На правах мелкого пополнения перевода.

                                          В Интернетах наткнулся на заявленный в 2008 году баг версии 0.9.1, мол этот curlftpfs во время скачивания файла отъедает под него оперативку. На sourceforge-странице доступна для скачивания версия 0.9.2, добавленная примерно через месяц, после регистрация бага. В новостях проекта и на его страничке информации об этой новой версии нет. Апробация на 5-гигабайтном видео-файле продемонстрировала успех в поточном проигрывании прямо с ftp-шары и скачивании копированием: htop показывал 300...400 мегабайт виртуального потребления и 3...4 килобайта «ресурсов».
                                            0
                                            Уважаемые коллеги, кто нибудь пользовал rsync через curlftpfs? Это кажется удобным решением для бэкапа. Только как будет с надежностью?

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое