Это возможно как в Linux, так и в Windows.
Как это сделать в виндах — расскажу чуть попозже, а в Linux нам поможет небольшая программа CurlFtpFS.
CurlFtpFS — утилита для монтирования удалённых FTP-хранилищ в локальную файловую систему. После монтирования мы можем оперировать с данными на сервере как с локальными, а все рутиные операции обмена файлами по протоколу FTP за нас будет делать утилита. Звучит неплохо, да?
Как установить
В пример буду приводить набирающую обороты Ubuntu, как систему для простых пользователей.
Набираем в консоли от имени суперпользователя:
Теперь нужно создать папку, куда будем монтировать FTP-хранилища. Предлагаю использовать /media , в этом случае они будут сразу отображаться в наутилусе:
Чтобы не делать все операции от суперпользователя, добавим текущего юзера в группу fuse и установим нужные права на целевой каталог:
adduser имя_пользователя fuse
chgrp fuse /media/ftp
chmod g+w /media/ftp
Как использовать
curlftpfs ftp://[пользователь]:[пароль]@имя_сервера /media/ftp [опции]
curlftpfs имя_сервера /media/ftp -o user=пользователь:пароль [другие_опции]
мне второй вариант нравится больше.
Настраиваем кодировки
Не забываем, что многие сервера создаются для виндуз-пользователей. Встроенный в винду FTP-клиент знает только одну кодировку: windows-1251, и именно в этой кодировке подобный FTP-сервер будет передавать имена файлов.
Соответственно, так как у нас utf8, вместо русских имён мы увидим абракадабру. И наоборот: при создании файла с русским именем, абракадабру увидят виндуз-пользователи.
Чтобы этого избежать, дописываем в опции соединения: codepage=windows-1251 (указываем какая кодировка используется на сервере) и iocharset=utf8 (указываем какая кодировка у нас, можно не писать).
curlftpfs имя_сервера /media/ftp -o user=пользователь:пароль,codepage=windows-1251[,iocharset=utf8]
Или делаем то же, но используя модуль iconv, что правильнее:
curlftpfs имя_сервера /media/ftp -o user=пользователь:пароль,modules=iconv,from_code=CP1251,to_code=UTF8
Другие настройки
Мой местный интернет-провайдер держит анонимный FTP-сервер. Его поддерживают замечательные администраторы, он до сих пор не понимает маленькую букву «я» в названиях файлов. Но дело даже не в этом.
Скорость заливки/скачивания на этом сервере не ограничена. Но! При попытке открыть несколько FTP-сессий, скорость на несколько минут падает до нескольких килобайт в секунду. С учётом, что на дворе 21 век, 2010 год, параллельные вычисления и нанотехнологии, считаю такой подход замечательным.
Чтобы забыть про администраторов нетрадиционной сексуальной ориентации, можно использовать опцию -s при подключении curlftpfs. Она отключит многопоточные операции.
curlftpfs имя_сервера /media/ftp -o modules=iconv,from_code=CP1251,to_code=UTF8 -s
Автомонтирование при запуске
Для автомонтирования ресурса при каждом запуске, добавим следующую строчку в файл /etc/rc.local :
sudo -u пользователь curlftpfs [параметры_подключения]
где пользователь — имя локального пользователя, от которого запустится curlftpfs.
Отмонтируем
От имени текущего пользователя. Или, если хочется поизвращаться, то от имени суперпользователя:
Ссылки
После монтирования выполните команду df, о ужас — по умолчанию в таблице монтирования
имя файловой системы присваивается следующего вида:curlftpfs#ftp://user:pass@host
Опция fsname= поможет скрыть эти данные.
Логин и пароль засвечиваются только в том случае, если писать их в URI для подключения.
Если передать их опциями (-o user=login:password), то всё будет хорошо.
Автоматизировать ввод пароля можно через стандартный ~/.netrc файл (man netrc):
machine ftp.test.ru
login логин
password пароль
Автомонтирование через fstab:
curlftpfs#ftp.host.com /mnt/host fuse rw,uid=500,user,noauto 0 0
Совет: Перед изменением /etc/fstab — проведите монтирование вручную, после чего выполните команду mount (или cat /etc/mtab).
Источник и назначение монтирования надо будет внести в fstab согласно этому выводу, с точностью до символа.
Полезные опции:
noauto — не монтировать при загрузке;
uid=# — идентификатор владельца (кому нужно заходить на подмонтированный ресурс);
_netdev — указание, что ресурс сетевой.
Комментарии
buko
что нам дает вот это:
curlftpfs ftp://[пользователь]:[пароль]@имя_сервера /media/ftp [опции]
или
curlftpfs имя_сервера /media/ftp -o user=пользователь:пароль [другие_опции]
После этого в нашей папке /media/ftp появляются все файлы что лежат на сервере?
После этого в нашей папке /media/ftp появляются все файлы что лежат на сервере?
Это монтирование. После монтирования мы можем зайти в этот каталог и оперировать с файлами так, как будто они находятся на локальном диске. В этом смысле можно сказать «появляются», да.
Но в папку ничего не копируется, физически файлы находятся всё так же на удалённом FTP-сервере.
buko
Супер! Получилось.
А я могу теперь синхронизировать папку /media/ftp с какой-нибудь другой папкой на компьютере?
Просто моя IDE-программа надолго зависает если я открываю файл непосредственно из папки /media/ftp и начинаю редактировать.
А я могу теперь синхронизировать папку /media/ftp с какой-нибудь другой папкой на компьютере?
А смысл?
Если синхронизировать, то лучше непосредственно с FTP.
Просто моя IDE-программа надолго зависает если я открываю файл непосредственно из папки /media/ftp и начинаю редактировать.
Периодически и не со всеми серверами есть такая хрень. Плюс, иногда выползают ошибки ввода-вывода, input/output error. Из-за чего не знаю, у меня разобраться пока не получилось.
Говорят, косяк в текущей версии, для исправления советуют откатиться на предыдущую. Подробнее здесь: http://www.it-simple.ru/?p=4893
Если на FTP нет файлов с русскими именами или они хранятся в кодировке UTF-8, можно подмонтировать прямо через наутилус.
Содержимое удалённого сервера будет в каталоге ~/.gvfs/
buko
Как эксперт, дайте ваш совет по реализации синхронизации двух папок в убунте, с автозапуском этой самой синхронизации при изменении(или при каком-нибудь другом условии) любого содержимого в этих папках, причем в двустороннем направлении.
Искал программу которая могла бы это делать но так и не нашел ничего подходящего для себя (ввиду того что на линукс пересел неделю назад, консольные программы для меня еще пока как тропические леса амазонки, хотя по инструкции иногда получается).
Выполнимая ли это задача?
Извиняюсь что ушел немного от темы.
дайте ваш совет по реализации синхронизации двух папок в убунте, с автозапуском этой самой синхронизации при изменении(или при каком-нибудь другом условии) любого содержимого в этих папках, причем в двустороннем направлении.
Искал программу которая могла бы это делать но так и не нашел ничего подходящего для себя (ввиду того что на линукс пересел неделю назад, консольные программы для меня еще пока как тропические леса амазонки, хотя по инструкции иногда получается).
Выполнимая ли это задача?
Задача выполнимая. У линухов как у ОС невыполнимых задач вообще, по-моему, нет. Более того, одну и ту же задачу можно решить огромным количеством способов. Иногда это вгоняет в ступор, не знаешь что выбрать.
Консоль — одно из преимуществ системы. Все операции желательно делать в ней, даже если поначалу трудно, сложно и непонятно. С опытом всё быстро придёт.
К каждой консольной утилите есть инструкция, с которой нужно подробно ознакомиться. Вызывается с помощью [man команда]. Чаще всего на птичьем английском языке, но многие и на русском, то есть, вопросов с пониманием возникнуть не должно.
Для синхронизации содержимого двух папок отлично подходит 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
У меня пароль имеет вид «_!?_цифро-буквы_?!_» и после ввода «curlftpfs site.com /media/FTP -o user=username:_!?_цифро-буквы_?!_»
выдаёт «bash: !?_цифро-буквы_?: event not found»
Что нужно сделать, чтобы пароль не распознавался, как какое-то событие?
Strek
Нашёл. Заключил в одинарные кавычки данные — username:_!?_цифро-буквы_?!_
то есть, что было так ‘username:_!?_цифро-буквы_?!_’
Нашёл. Заключил в одинарные кавычки данные — username:_!?_цифро-буквы_?!_
то есть, что было так ‘username:_!?_цифро-буквы_?!_’
Скорее всего, один из символов пароля был служебным.
И, скорее всего, в кавычки достаточно заключить только пароль.
kirill
а что делать если disk на ftp сервере fat32?
imen
а что делать если disk на ftp сервере fat32?
С какой стороны (пользователь или администратор сервера)?
И что это за сервер такой загадочный?…
ЗЫ: Обыкновенно, как в случае стандарта де-факто на файловую систему для сменных носителей (то есть глобально эмулировать посредством опций монтирования).
а что делать если disk на ftp сервере fat32?
Не понял. А какая разница, какая ФС на серверном диске? Хочется приключений — пусть будет FAT32.
При запросе файла по FTP команда поступает FTP-серверу, который представляет собой демон. Демон запросит файл у операционной системы, на которой он вращается. И только ОС обратится к файлу непосредственно, через драйвер соответствующей ФС.
Таким образом, FTP-серверу глубоко насрать на то, в какую файловую систему отформатирован диск. Он тупо не работает с файлами на этом уровне.
Raf
Приветствую, заметил, что не сразу появляются файлы после сброса их в папку со стороны ФТП, т.е. в примонтированной папке их не видно некоторое время, я так понял, что от размера зависит. отмонтирование и примонтирование ничёго не дают, есть какой ключ делающий обновление файлов в папке ?
Приветствую, заметил, что не сразу появляются файлы после сброса их в папку со стороны ФТП, т.е. в примонтированной папке их не видно некоторое время, я так понял, что от размера зависит. отмонтирование и примонтирование ничёго не дают, есть какой ключ делающий обновление файлов в папке ?
Насколько я знаю, копирование файлов по FTP происходит через каталог временных файлов. Почему так — хз, но копни в эту сторону. Может, причина задержки в этом.
Виталий
Не могу создать бекап rar на диске CurlFtps, tar.gz создаётся без проблем.
У меня нет места свободного для бекапов и я создаю архив прямо на ftp диске и при этом временные файлы на локальном диске если архивировать tar.gz не создаются.
А rar не хочет — пишет сразу ошибку. Может у вас получится, может я какой то параметр не дописал.
При частых обрывах попробуйте снизить MTU с 500 на 1475 — мне помогло!
Виталий
Получилось создать rar архив но на SSHFS диске и место не занимает. Ура!
sshfs login@1.1.1.1:/raid/backup/www /media/FTP
rar a -r -u -m5 -pPAAS /media/FTP/$HOSTNAME-$(date +’%Y-%m-%d’).rar /home* /etc* /root* /var/log* & cpulimit —exe=rar —limit=30
Если вы видите эту надпись,
значит, новый движок уже в работе
и страница отображается с помощью него.
Обратная связь
по электропочте info©it-simple.ru
или через нанокомментсы.
Техническая информация
Время подготовки страницы: 0.001073 c.
Кэш: частичный.