Не могу скопировать файл на ftp

Обновлено: 07.07.2024

FTP - это один из самых популярных способов передачи файлов на сервер серди веб-мастеров и пользователей. File Transfer Protocol - довольно давняя технология, которая применялась для передачи файлов между компьютерами еще на заре зарождения интернета. Но она до сих пор сохранила свою популярность из-за простоты и надежности.

В одной из предыдущих статей мы писали о том, как выполняется настройка FTP на Ubuntu 16.04, в этой статье рассмотрим как работает передача файлов по FTP, рассмотрим как передать файлы с помощью терминала или в графическом интерфейсе.

Как работает FTP?

Протокол FTP представляет из себя набор команд, которые мы можем передавать на сервер обычным текстом для аутентификации, просмотра содержимого каталогов, перемещения по каталогам, отправки и скачивания файлов. Все команды передаются в открытом виде, в том числе и пароль, поэтому использование FTP очень небезопасно, и лучше применять передачу файлов scp или защищенный протокол sFTP, который мы рассмотрим ниже.

Важно заметить, что для передачи файлов и обработки команд используются два разных соединения. Команды передаются на порт 21, а когда нужно передать файл, сервер FTP сообщает на какой порт нужно начать отправлять информацию. Не будем вдаваться в подробности, скажу только, что существует два режима передачи файлов. Это активный, когда сервер подключается к компьютеру и начинает считывать файл и пассивный, когда компьютер передает файл на сервер. Сейчас в большинстве случаев применяется пассивный режим, потому что большинство пользователей используют NAT, что не позволяет серверу самому подключаться к портам клиента.

А теперь перейдем ближе к практике и рассмотрим как выполняется передача файлов по FTP.

Передача файлов по FTP через терминал

Мы могли бы использовать telnet для передачи файлов по FTP через терминал, но это слишком сложно и не нужно. Существует консольный клиент FTP с более простым синтаксисом и достаточными возможностями. Сначала рассмотрим общий синтаксис и команды утилиты:

$ ftp опции адрес_сервера

Опций у утилиты всего несколько, но нам нужно их рассмотреть, потому что они могут быть вам очень полезны:

  • -A - использовать активный режим во время передачи файлов;
  • -p - использовать пассивный режим, используется по умолчанию;
  • -i - отключать интерактивный режим во время передачи файлов;
  • -n - попытаться использовать автоматический вход;
  • -e - отключить историю команд;
  • -v - максимально подробный вывод;
  • -d - включить режим отладки.

Дальше рассмотрим команды интерактивного режима, которые вы будете использовать для подключения к серверу и управления файлами:

Это далеко не все команды, которые вы можете использовать для передачи файлов, но здесь перечислено все самое основное, и вам их точно хватит для решения простых задач.

Сначала подключаемся к нашему серверу, команде нужно передать адрес сервера:


Затем авторизуемся на сервере, нужно передать логин и пароль:


Только после этого перед нами открывается командная оболочка FTP клиента. Именно здесь будет выполняться передача файлов ftp. Изменим текущую папку на FTP, затем посмотрим ее содержимое и выведем полный адрес текущей папки:

ftp> cd FTP
ftp> ls
ftp> pwd


Перейдем в папку documents на удаленном сервере и посмотрим ее содержимое:

ftp> cd documents
ftp> ls


Чтобы скачать файл по FTP с удаленного сервера нам нужно использовать команду get. Просто передайте команде имя файла:

ftp> get document2.odt


Теперь файл находится на нашей локальной машине. Мы можем выполнять команды на локальной машине если перед ними добавить символ "!". Например, посмотрим содержимое домашней папки чтобы убедиться, что файл был загружен:


Загрузка файлов по FTP на сервер выполняется с помощью команды put, причем, здесь, как и в предыдущей команде можно задать имя создаваемого файла:

ftp> put document2.odt document3.odt


Также можно управлять файлами на удаленном сервере. Переименуем файл doument1.pdf, так чтобы он назывался правильно:

ftp> rename doument1.pdf document1.pdf


Затем удалим document3:

ftp> delete document3.odt


Для завершения сеанса FTP наберите Bye:

Сейчас многие FTP серверы используют шифрование на основе ssl сертификатов. Это необходимая мера, которая позволяет обезопасить данные пользователей. Для подключения к таким серверам необходимо использовать утилиту sftp, в остальном же процесс и команды не отличаются.

Передача файлов по FTP в графическом интерфейсе

Передача файлов на FTP через графический интерфейс может выполняться с помощью различных графических клиентов. Один из самых популярных из них - это Filezilla. Его можно использовать в Linux, Windows или MacOS. Например, для установки в Ubuntu используйте такую команду:

sudo apt install filezilla

Вот так выглядит главное окно утилиты. Для подключения к серверу необходимо ввести данные аутентификации в поля, которые находятся в верхней части окна:


Затем нажмите кнопку "Быстрое соединение". Если программа удачно подключится к серверу, то вы увидите список файлов на правой панели. На левой панели находится ваша локальная файловая система:

Чтобы передать файл достаточно его перетащить в нужную часть окна:


В контекстном меню вы можете выполнять различные действия с файлами, удалять, перемещать, копировать, переименовывать и даже редактировать. К тому же программа поддерживает подключение к серверам FTP, которые используют шифрование.

Выводы

В этой статье мы рассмотрели передача файлов ftp, а также как пользоваться ftp в целом для передачи, загрузки и управления файлами. Это очень полезная служба, которая позволяет просто и без особых знаний передавать файлы между компьютерами. Если у вас остались вопросы, спрашивайте в комментариях!

Копировать файлы с компьютера или ноутбука (далее ПК) на мобильное устройство (далее Андроид) и обратно требуется часто и (в случае больших файлов) проще всего это делать, используя Wi-Fi.

Основное требование: Все устройства (один или несколько ПК, Андроиды) должны быть подключены к одной сети!

Прикрепленное изображение

При тапе по одному из них будет открыт список папок, либо выдан запрос имени пользователя и пароля для доступа к общим ресурсам этого ПК. Дальше можно работать с сетевыми файлами так же как и с локальными.
Итак, диспозиция: Win 7, статический IP, единственный пользователь, созданный при установке, у которого отсутствует пароль.
Если в Win 7 включен общий доступ с парольной защитой (по умолчанию), то ES проводник даже не сможет просмотреть список расшаренных папок, его сразу пошлют, потому что у него документов нету.
Если общий доступ с парольной защитой отключен, то список расшаренных папок в ES проводнике отображается, но доступ можно получить только к папке Users, т.к. к ней по умолчанию разрешен доступ для всех.
Вариантов - два: либо отключить парольную защиту и предоставлять права на доступ к каждой расшаренной папке пользователю гость/Guest (свойства папки>Доступ, там в списке выбрать Guest и нажать добавить), либо не отключать парольную защиту, а создать пользователя, имеющего пароль, и опять же предоставить ему права на доступ к расшаренной папке в том же диалоге. После этого имя и пароль этого пользователя требуется вводить в настройках сервера в ES Проводнике.
По умолчанию Win 7 дает доступ к расшариваемой папке только единственному нашему пользователю, у которого нет пароля, соответственно авторизоваться по сети он не может.
Если Вам не хочется выбирать пользователя при каждой загрузке, то настройте автоматический вход.

    Samba-сервер
    Для примера используем Samba Server for Android, он позволяет работать с SD-картой коммуникатора, как с расшаренной папкой ПК. Для работы программы требуются root-права.
    Устанавливаем и запускаем программу. При первом запуске будет выдана краткая инструкция по использованию. Первый шаг - задать пароль для доступа к ресурсам мобильного устройства. Для этого нажмите Menu>Settings>Password и введите пароль. Там же можно при желании сменить имя пользователя, а также указать рабочую группу (имя должно совпадать с именем рабочей группы в настройках ПК) и NetBIOS-имя Андроида (то, что будет отображаться в сетевом окружении на ПК). После настройки вернемся в главное окно программы и нажмем Menu>Enable. Это запустит сервер SAMBA на Андроиде.

Прикрепленное изображение

Если все сделано правильно, то в сетевом окружении на ПК появится компьютер с именем Samba on Android, у которого есть расшаренная папка SDCARD.

Прикрепленное изображение

Прикрепленное изображение

Аппарат LenovoP700i, X-plore 3.37.01, роутер Dir-620..(ES у меня почему-то не пошел: находит сервер без проблем, файлы видит, но скорость оооочень низкая, и обрубается через небольшой трафик, фильм пытаешься открыть - воспроизводит только первые кадры. Переустановка не помогла. ) С Х-plore таких проблем нет, всё замечательно! 1. Перенастроить DHCP в маршрутизаторе так, чтобы он выдавал каждому участнику сети свой IP, всегда одинаковый Например для роутера D-Link DIR-300 это делается в разделе DHCP Server Settings (Настройки DHCP-сервера ) веб-интерфейса. Для TP-Link TL-WR1043 - в разделе DHCP>Address Reservation

Прикрепленное изображение

Прикрепленное изображение

В поля этого раздела нужно внести MAC-адрес сетевой карты подключенной к роутеру, IP-адрес, который роутер ему выдаст и, для некоторых моделей роутеров, имя устройства.
На компьютере с Windows MAC-адрес можно узнать, выполнив в командной строке (Пуск>Выполнить>cmd) команду

Подключение по локальной сети - Ethernet адаптер:

DNS-суффикс этого подключения . . :
Описание . . . . . . . . . . . . : Realtek PCIe GBE Family Controller
Физический адрес. . . . . . . . . : 00-1F-D0-D4-53-2D
Dhcp включен. . . . . . . . . . . : нет
IP-адрес . . . . . . . . . . . . : 192.168.5.2
Маска подсети . . . . . . . . . . : 255.255.255.0
Основной шлюз . . . . . . . . . . : 192.168.5.1
DNS-серверы . . . . . . . . . . . : 192.168.5.1


Здесь физический адрес и есть нужный нам MAC. Т.е. 00-1F-D0-D4-53-2D.
MAC-адрес Андроида можно посмотреть в пункте "О телефоне" меню настроек (Меню>Настройки>О телефоне>Состояние>MAC-адрес Wi-Fi)
2. Перенастроить сетевые карты на ПК (ноутбуке) на использование статических IP-адресов В Windows 2k/XP это делается в свойствах сетевого подключения, в настройках протокола TCP/IP. Выбрать "Использовать следующий IP-адрес", указать IP (IP должен быть из локальной сети роутера, обычно 192.168.0.xxx), маску подсети (обычно 255.255.255.0), шлюз по умолчанию (IP-адрес роутера) и DNS-серверы (либо IP роутера, либо DNS-серверы провайдера, либо открытые DNS-серверы, например Google DNS - 8.8.8.8, 8.8.4.4).
Например у меня настройки выглядят так (адрес роутера - 192.168.5.1):

Прикрепленное изображение

Прикрепленное изображение

После этого нужно дать общий доступ к нужным папкам ПК.

Ребрендинг шапки любезно предоставлен Fidelich - тыц.

Застопорился на 2 этапе. Не пойму какой логин и пароль вводить ES проводнику, чтобы получить доступ к общим файлам и папкам на ноутбуке с Windows 7. Вроде пароль для беспроводного соединения нашел (но не уверен, что он), а вот логин не могу найти.
Подскажи, где выставлять в Windows 7 эти логин и пароль?

skunsofob,
Имя и пароль пользователя Windows.
Т.е. можно либо вписать имя и пароль того пользователя под которым заходишь в Windows, либо создать отдельного, назвать его, например, Android.

Возможно проблема также в том, что у пользователя Windows отсутствует пароль.
Насчет Win 7 не знаю, но Win XP Pro запрещает доступ к расшаренным папкам пользователям без пароля.

Еще вариант - попробовать поставить в настройках сервера галку "Анонимный вход".

Галку Анонииный вход ставил - не помогает. А паролей у меня действительно нет как на ПК с ХР, так и на ноуте с Win7. Неужеле придется отдельного пользователя создавать под паролем? По проводам сеть делал - паролей не требовалось.

Т.е. доступ с ПК на ноут с Win 7 есть и без пароля?
Имя пользователя Win 7 и пустой пароль в настройках ES проводника не срабатывает?

Проверь настройки Win7 в Панель управления -> Сети и Интернет -> Центр управления сетями и общим доступом ->Изменить дополнительные параметры общего доступа (Control Panel -> All Control Panel Items -> Network and Sharing Center-> Change advanced sharing settings), там в самом низу еще раз дополнительные параметры и указать "Отключить защиту паролем". После этого анонимный вход с Андроида должен заработать.

Как вариант - попробуй временно отключить брандмауэр в Win 7. Возможно он мешает.

Что-то не получается
Нажимаю "сканировать" находится мой пк при том что ни одна папка не расшарена, при попытке к нему соеденится пишет неверный логин и пароль - не пойму какой логин, какой пароль. пишет неверный логин и пароль - не пойму какой логин, какой пароль.

Логин и пароль пользователя Windows, имеющего доступ к расшаренным папкам.

Нажимаю "сканировать" находится мой пк при том что ни одна папка не расшарена,

Так я никакой логин и пароль не использую для учетной записи (Windows 7)

Да пробовал (создавал папку и расшаривал к ней доступ), не работает все равно, брандмауэр отключал

Так я никакой логин и пароль не использую для учетной записи (Windows 7)
Как минимум один пользователь был создан при установке ОС. Загляните в Панель управления>Учетные записи или введите в поле поиска меню Пуск команду

и нажмите Enter.
После этого будет выдан список всех имеющихся учетных записей пользователей
Временно (ну или постоянно, хотя это небезопасно) отключите парольную защиту расшаренных папок.

Проверь настройки Win7 в Панель управления -> Сети и Интернет -> Центр управления сетями и общим доступом ->Изменить дополнительные параметры общего доступа (Control Panel -> All Control Panel Items -> Network and Sharing Center-> Change advanced sharing settings), там в самом низу еще раз дополнительные параметры и указать "Отключить защиту паролем". После этого анонимный вход с Андроида должен заработать. Причина редактирования: Добавил control userpasswords2

Учетная запись есть, но пароль в ней никакой не используется (если не используется что вводить?), почему запрашивается не пойму

Анонимный вход в настройках сервера в ES проводнике попробуйте включить.

Включен анонимный вход, все равно не пускает. Пишет: неправильний пароль, возможные причины: недостаточно прав пользователя

Может есть альтернативное решение со значительно простой настройкой?)

Может есть альтернативное решение со значительно простой настройкой?)

Попробуйте другие файл-менеджеры с поддержкой сети.
Если не заработает, то включите защиту паролем для расшаренных папок и создайте пользователя (например Android) с паролем.

Включен анонимный вход, все равно не пускает. Пишет: неправильний пароль, возможные причины: недостаточно прав пользователя

Разобрался.
Итак, диспозиция: Win 7, статический IP, единственный пользователь, созданный при установке, у которого отсутствует пароль.
Если в Win 7 включен общий доступ с парольной защитой (по умолчанию), то ES проводник даже не сможет просмотреть список расшаренных папок, его сразу пошлют, потому что у него документов нету.
Если общий доступ с парольной защитой отключен, то список расшаренных папок в ES проводнике отображается, но доступ можно получить только к папке Users, т.к. к ней по умолчанию разрешен доступ для всех.
Вариантов - два: либо отключить парольную защиту и предоставлять права на доступ к каждой расшаренной папке пользователю гость/Guest (свойства папки>Доступ, там в списке выбрать Guest и нажать добавить), либо не отключать парольную защиту, а создать пользователя, имеющего пароль, и опять же предоставить ему права на доступ к расшаренной папке в том же диалоге. После этого имя и пароль этого пользователя требуется вводить в настройках сервера в ES Проводнике.
По умолчанию Win 7 дает доступ к расшариваемой папке только единственному нашему пользователю, у которого нет пароля, соответственно авторизоваться по сети он не может.
Если Вам не хочется выбирать пользователя при каждой загрузке, то настройте автоматический вход.

Часто требуется автоматизировать процессы скачивания, загрузки и удаления файлов c FTP-сервера. Например, при работе с распределенными базами данных 1С или для сохранения резервных копий. Но не все знают, что эти процедуры можно выполнять из командной строки, не прибегая к дополнительному программному обеспечению, то есть средствам Windows. Ниже я приведу синтаксис команд для работы с FTP, а также примеры bat-файлов для этих операций.

1. Команда ftp

Для обмена файлами с FTP-сервером используется команда ftp, вот ее синтаксис:

FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-A] [-x:sendbuffer]
[-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [узел]

Как видно, здесь нет операторов для подключения к серверу и работы с файлами. Дело в том, что эта команда только запускает сеанс ftp:

komanda_ftp_01

Далее, работа с FTP-сервером происходит уже при помощи следующих операторов (пропустить) :

!
Временный переход в оболочку.

append
Добавление в файл.

ascii
Установка режима передачи файлов в формате ascii.

bell
Выдача звукового сигнала по завершении команды

binary
Установка режима передачи файлов в двоичном формате.

bye
Завершение сеанса ftp и выход.

close
Завершение сеанса ftp.

debug
Переключение режима отладки.

disconnect
Завершение сеанса ftp.

glob
Переключение метасимвольного расширения имен локальных файлов.

prompt
Переключение интерактивной подсказки для составных команд.

pwd
Вывод рабочего каталога удаленного компьютера.

quit
Завершение сеанса ftp и выход в командную строку.

status
Отражение текущего состояния подключения ftp.

trace
Переключение трассировки пакетов.


Рассмотрим небольшой пример.

komanda_ftp_02

Для этого необходимо выполнить следующий набор команд:

В итоге получим требуемый результат:

komanda_ftp_03

komanda_ftp_04

komanda_ftp_05

2. Пример bat-файла для загрузки файла на FTP

  • Создаем файл transport.txt с последовательностью операторов ftp;
  • Выполняем команду ftp, указав в качестве параметров созданный файл;
  • Удаляем transport.txt.

komanda_ftp_06

В данном примере имя файла и директорий жестко прописаны в файле. Это не всегда удобно. Доработаем bat-файл таким образом, чтобы данные для загрузки он получал в качестве параметров, а также вынесем все изменяемые значения в переменные файла. Получим следующий код (скачать файл):

komanda_ftp_07

komanda_ftp_08

Аналогичным образом можно написать bat-файлы для получения файлов и удаления файлов на FTP-сервере, а также исполняющий файл с произвольным набором инструкций.

Смотрите также:

Не все знают, что можно создать прямую ссылку на файл, хранимый на FTP-Сервере, "зашив" в нее логин и пароль. Также возможно создать ярлык на какую-либо директорию или даже подключить ее…

Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в целях…

FTP-Сервер обеспечивает возможность передачи файлов между клиентом и сервером с помощью протокола FTP. Здесь будет рассказано как запустить FTP-сервер в Windows Server 2008 R2. 0. Оглавление Добавление службы FTP-сервер Добавление…

Фаервола на сервере нет. Привожу конфиг vsftpd:

Логинюсь с виртуального пользователя admin, для него файл конфигурации:
local_root=/srv/ftp/content
write_enable=YES

Права на каталог /srv/ftp/content - 766, владелец - локальный пользователь virtual, под которым работают все виртуальные пользователи.



Логи vsftpd в студию


df -h ? getenforce?



Пришла на работу, пробую копировать - снова ошибка. Через время подходит контент-менеджер, говорит вроде получается заливать пока без ошибок, через проводник, еще говорит, что кэш почистила, может поэтому заработало. Почистила у себя, копирую, вроде работает. Вот уж никогда б на кэш проводника не подумала.

И еще вылезла проблема - в IE и мозиле имена каталогов и файлов на кириллице отображаются кракозябрами. подскажите, пожалуйста, где нужно кодировку настроить?


а ещё дайте вывод getfacl


Насчет кодировки, попробовала добавить в конфиг строки:

convert_charset_enable=YES
local_charset=UTF-8
remote_charset=WIN1251

демон с ними отказывается стартовать.


я так поняла, вы про браузер? хотелось бы применить настройки на самом сервере, чтоб менеджерам не приходилось постоянно лазить в настройках браузера, не совсем удобно.

На getfacl ругается, что команда не найдена.



Так тоже не стартует(

Вот снова пытаюсь копировать, через секунд 5-10 сбрасывает соединение, в логах снова ничего об отказах в доступе или еще о чем нибудь настораживающем не вижу:


Еще стала замечать, что например при копировании файлов через winSCP или быстром пролистывании текстового файла через Putty (в общем, при возрастании нагрузки) соединение по ssh разрывается. Может, и по ftp по этим же причинам файлы не копируются, только каковы причины? Железо там, конечно, старовато, но не настолько же.


SELinux не включен? что говорит top ? проверить ping'ом в течении часа. есть ли потери?

Читайте также: