Вопрос или проблема
Существуют ли полнофункциональные консольные (командные) ftp-клиенты?
Я переношу части веб-сайта от одного хоста к другому. На одном сервере есть доступ через ssh (а значит scp, sftp и т.д.), на другом только ftp.
Мой домашний компьютер — это Ubuntu desktop. До сих пор я использовал Filezilla для загрузки на свой рабочий стол, а затем загружал файлы на новый сервер оттуда. Это медленно и неэффективно, так как все передается дважды, а скорость моей домашней сети ограничена и имеет месячную квоту по трафику. Хотя у двух серверов между собой быстрая связь. Мне бы хотелось просто зайти на один сервер по ssh и получить необходимые файлы напрямую.
Поэтому я ищу консольный ftp-клиент, обладающий набором функций, подобным Filezilla (мне нужно выбирать, что переносить, а что оставлять). Существует ли такое приложение?
На мой взгляд, самым мощным командным ftp-клиентом, несомненно, является lftp.
- позволяет использовать стандартные команды shell через ftp
- предоставляет очередь загрузки/выгрузки для длительных операций
Проверьте, установлен ли Midnight Commander (mc
). Если да, вы можете выполнять ftp оттуда.
Вы можете значительно облегчить себе жизнь, используя fuse файловую систему.
На машине, к которой можно подключиться по ssh, установите curlftpfs
sudo apt-get install curlftpfs
Затем добавьте себя в группу fuse
sudo usermod -aG fuse <username>
Выйдите из системы и войдите снова, чтобы изменения вступили в силу.
Создайте каталог для точки монтирования
mkdir ~/ftp
Затем смонтируйте ftp сервер как локальную файловую систему
curlftpfs ftp.server.com ~/ftp -o user=<ftp_username>
Введите пароль, когда будет запрошено.
Вы можете использовать файлы удаленного ftp сервера так, как будто они находятся на локальной машине. Это позволяет использовать cp, rsync и т.д. без хлопот, связанных с ftp.
Прочитайте man-страницу для получения дополнительной информации
Особенно полезно, если вы часто делаете подобные вещи.
На случай, если кому-то это еще нужно 🙂
Я смог перенести крупный веб-сайт с виртуальной машины Linux (с командной строки SSH) в облачный сервис веб-сайтов Azure прямо (через ftp), используя клиента ncftp, по инструкции здесь
Наконец, не забудьте удалить ftp-клиент из вашей виртуальной машины после завершения.
Всего хорошего.
Чтобы сэкономить сетевую полосу, ssh на хост, к которому у вас есть доступ через ssh, а затем ftp с него на хост, где у вас есть только ftp. Для ftp-клиентов мне нравится tnftp для интерактивного использования и lftp для автоматизации.
Кстати, rclone довольно эффективен для больших передач и может работать с FTP и sftp. https://rclone.org/docs/. Он даже поддерживает параллелизм, что отлично для больших передач через сети с высокой задержкой.
Ответ или решение
Рекомендуемые консольные FTP-клиенты для выполнения задач, связанных с переносом данных между серверами, могут значительно улучшить ваш рабочий процесс, особенно когда у вас ограниченный доступ к серверам. В рассматриваемом случае, один из серверов поддерживает доступ через SSH (и соответственно SCP, SFTP и т.д.), но другой — только через FTP. Чтобы оптимизировать процесс передачи данных и избежать необходимости скачивания файлов на локальный компьютер перед их повторной отправкой на другой сервер, можно воспользоваться несколькими инструментами, о которых мы поговорим более подробно.
-
LFTP
LFTP — это мощный и гибкий консольный FTP-клиент, который обеспечит вам множество функций, аналогичных тем, которые предлагает FileZilla. Он позволяет использовать стандартные команды оболочки над FTP, что упрощает работу с файлами. Простая команда установки на Ubuntu:sudo apt-get install lftp
Некоторые особенности LFTP:
- Поддержка очередей закачки и скачивания, что особенно удобно для длительных операций.
- Возможность работы с несколькими протоколами, такими как FTP, HTTP, FISH, и SFTP.
- Автоматизация и скриптинг операций благодаря поддержке командной оболочки.
-
Midnight Commander (MC)
Midnight Commander — это консольный файловый менеджер, который также поддерживает FTP как одну из функций. Он обеспечивает удобство работы с файлами через интерфейс, похожий на Norton Commander. Чтобы установить Midnight Commander, выполните:sudo apt-get install mc
После установки вы можете открыть MC командой
mc
и использовать встроенный FTP-клиент для доступа к необходимым файлам удаленно. -
CurlFtpFS через FUSE
Если вам необходимо работать с FTP-сервером так, будто он является частью локальной файловой системы, CurlFtpFS — это отличный выбор. Утилита FUSE позволяет монтировать FTP-сервер в файловую систему вашего сервера:sudo apt-get install curlftpfs sudo usermod -aG fuse <username>
После внесения пользователя в группу
fuse
и перезапуска сессии, создайте точку монтирования и выполните команду:mkdir ~/ftp curlftpfs ftp.server.com ~/ftp -o user=<ftp_username>
Этот подход позволяет использовать стандартные команды Unix, такие как
cp
иrsync
, без прямого взаимодействия с FTP-протоколом. -
NCFTP
NCFTP — это еще один мощный клиент FTP, который предназначен для облегчения процесса загрузки и выгрузки файлов. Он полезен для переносов данных напрямую между удаленными серверами:sudo apt-get install ncftp
Эта утилита предоставляет интерфейс командной строки для выполнения операций с FTP и поддерживает создание скриптов для автоматизации задач.
-
Rclone
Rclone отлично подходит для больших переносов, поддерживая как FTP, так и SFTP. Он отличается возможностью параллельной загрузки, что существенно увеличивает скорость передачи данных при высоких задержках сети:curl https://rclone.org/install.sh | sudo bash
Rclone также предлагает гибкие возможности синхронизации и копирования данных, предоставляя инструменты для управления облачными и локальными файловыми системами.
Заключение:
При выборе подходящего инструмента следует учитывать не только наличие необходимых функций, но и специфические требования вашей задачи, такие как поддерживаемые протоколы, потребность в скриптинге и автоматизации, а также удобство пользовательского интерфейса. LFTP и Rclone являются универсальными решениями, которые подходят для большинства сценариев, но специфические задачи могут потребовать использования более специализированных инструментов, таких как NCFTP или CurlFtpFS.
Надеюсь, это детальное руководство поможет вам выбрать наиболее подходящий консольный FTP-клиент и оптимизировать ваш процесс работы с файлами в сетевой среде.