All Projects → aio-libs → Aioftp

aio-libs / Aioftp

Licence: apache-2.0
ftp client/server for asyncio (http://aioftp.readthedocs.org)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Aioftp

EOSFTPServer
A project to create a complete, standard compliant, multi-user, Objective-C (Mac OS X / iOS) FTP server.
Stars: ✭ 35 (-69.83%)
Mutual labels:  ftp, ftp-client, ftp-server
php-ftp-client
📦 Provides helper classes and methods to manage FTP files in an OOP way.
Stars: ✭ 81 (-30.17%)
Mutual labels:  ftp, ftp-client, ftp-server
Google Drive Ftp Adapter
Google Drive FTP Adapter to connect to google drive through the FTP protocol
Stars: ✭ 292 (+151.72%)
Mutual labels:  ftp, ftp-server, ftp-client
FTP
FTP客户端,服务端
Stars: ✭ 34 (-70.69%)
Mutual labels:  ftp, ftp-client, ftp-server
firetrap
This project is no longer maintained. Check out the fork (lib)unFTP instead.
Stars: ✭ 15 (-87.07%)
Mutual labels:  ftp, ftp-server
fs2-ftp
Simple client for Ftp/Ftps/Sftp
Stars: ✭ 24 (-79.31%)
Mutual labels:  ftp, ftp-client
Proftpd
ProFTPD source code
Stars: ✭ 318 (+174.14%)
Mutual labels:  ftp, ftp-server
Ftp
FTP client package for Go
Stars: ✭ 785 (+576.72%)
Mutual labels:  ftp, ftp-client
ftpConnect
A simple and robust dart FTP Client Library to interact with FTP Servers with possibility of zip and unzip files.
Stars: ✭ 43 (-62.93%)
Mutual labels:  ftp, ftp-client
Filestash
🦄 A modern web client for SFTP, S3, FTP, WebDAV, Git, Minio, LDAP, CalDAV, CardDAV, Mysql, Backblaze, ...
Stars: ✭ 5,231 (+4409.48%)
Mutual labels:  ftp, ftp-client
Winscp
WinSCP is a popular free SFTP and FTP client for Windows, a powerful file manager that will improve your productivity. It supports also Amazon S3, FTPS, SCP and WebDAV protocols. Power users can automate WinSCP using .NET assembly.
Stars: ✭ 794 (+584.48%)
Mutual labels:  ftp, ftp-client
LaravelFtp
Laravel FTP client
Stars: ✭ 15 (-87.07%)
Mutual labels:  ftp, ftp-client
simple http server
simple http server for upload and download
Stars: ✭ 101 (-12.93%)
Mutual labels:  ftp, ftp-server
V3n0m Scanner
Popular Pentesting scanner in Python3.6 for SQLi/XSS/LFI/RFI and other Vulns
Stars: ✭ 847 (+630.17%)
Mutual labels:  asyncio, ftp
ftp-server
A FTP Server base on Spring Boot and Apache Ftp Server.😝
Stars: ✭ 17 (-85.34%)
Mutual labels:  ftp, ftp-server
Jsftp
Light and complete FTP client implementation for Node.js
Stars: ✭ 766 (+560.34%)
Mutual labels:  ftp, ftp-client
Drivebackupv2
Uploads Minecraft backups to Google Drive/OneDrive or by (S)FTP
Stars: ✭ 26 (-77.59%)
Mutual labels:  ftp, ftp-client
Rust Ftp
FTP client for Rust
Stars: ✭ 110 (-5.17%)
Mutual labels:  ftp, ftp-client
publish-sftp
One-line command to quickly publish resources to a specified server
Stars: ✭ 41 (-64.66%)
Mutual labels:  ftp, ftp-client
Pyftpdlib
Extremely fast and scalable Python FTP server library
Stars: ✭ 1,209 (+942.24%)
Mutual labels:  ftp, ftp-server

.. aioftp documentation master file, created by sphinx-quickstart on Fri Apr 17 16:21:03 2015. You can adapt this file completely to your liking, but it should at least contain the root toctree directive.

aioftp

.. image:: https://travis-ci.com/aio-libs/aioftp.svg?branch=master :target: https://travis-ci.com/aio-libs/aioftp :alt: Travis status for master branch

.. image:: https://codecov.io/gh/aio-libs/aioftp/branch/master/graph/badge.svg :target: https://codecov.io/gh/aio-libs/aioftp

.. image:: https://img.shields.io/pypi/v/aioftp.svg :target: https://pypi.python.org/pypi/aioftp

.. image:: https://img.shields.io/pypi/pyversions/aioftp.svg :target: https://pypi.python.org/pypi/aioftp

.. image:: https://pepy.tech/badge/aioftp/month :target: https://pypi.python.org/pypi/aioftp

ftp client/server for asyncio (http://aioftp.readthedocs.org)

.. _GitHub: https://github.com/aio-libs/aioftp

Features

  • Simple.
  • Extensible.
  • Client socks proxy via siosocks <https://github.com/pohmelie/siosocks>_ (pip install aioftp[socks]).

Goals

  • Minimum usable core.
  • Do not use deprecated or overridden commands and features (if possible).
  • Very high level api.

Client use this commands: USER, PASS, ACCT, PWD, CWD, CDUP, MKD, RMD, MLSD, MLST, RNFR, RNTO, DELE, STOR, APPE, RETR, TYPE, PASV, ABOR, QUIT, REST, LIST (as fallback)

Server support this commands: USER, PASS, QUIT, PWD, CWD, CDUP, MKD, RMD, MLSD, LIST (but it's not recommended to use it, cause it has no standard format), MLST, RNFR, RNTO, DELE, STOR, RETR, TYPE ("I" and "A"), PASV, ABOR, APPE, REST

This subsets are enough for 99% of tasks, but if you need something, then you can easily extend current set of commands.

Server benchmark

Compared with pyftpdlib <https://github.com/giampaolo/pyftpdlib>_ and checked with its ftpbench script.

aioftp 0.8.0

::

STOR (client -> server)                              284.95 MB/sec
RETR (server -> client)                              408.44 MB/sec
200 concurrent clients (connect, login)                0.18 secs
STOR (1 file with 200 idle clients)                  287.52 MB/sec
RETR (1 file with 200 idle clients)                  382.05 MB/sec
200 concurrent clients (RETR 10.0M file)              13.33 secs
200 concurrent clients (STOR 10.0M file)              12.56 secs
200 concurrent clients (QUIT)                          0.03 secs

pyftpdlib 1.5.2

::

STOR (client -> server)                             1235.56 MB/sec
RETR (server -> client)                             3960.21 MB/sec
200 concurrent clients (connect, login)                0.06 secs
STOR (1 file with 200 idle clients)                 1208.58 MB/sec
RETR (1 file with 200 idle clients)                 3496.03 MB/sec
200 concurrent clients (RETR 10.0M file)               0.55 secs
200 concurrent clients (STOR 10.0M file)               1.46 secs
200 concurrent clients (QUIT)                          0.02 secs

Dependencies

  • Python 3.7+

0.13.0 is the last version which supports python 3.5.3+

0.16.1 is the last version which supports python 3.6+

License

aioftp is offered under the Apache 2 license.

Library installation

::

pip install aioftp

Getting started

Client example

.. code-block:: python

import asyncio
import aioftp


async def get_mp3(host, port, login, password):
    async with aioftp.Client.context(host, port, login, password) as client:
        for path, info in (await client.list(recursive=True)):
            if info["type"] == "file" and path.suffix == ".mp3":
                await client.download(path)


async def main():
    tasks = [
        asyncio.create_task(get_mp3("server1.com", 21, "login", "password")),
        asyncio.create_task(get_mp3("server2.com", 21, "login", "password")),
        asyncio.create_task(get_mp3("server3.com", 21, "login", "password")),
    ]
    await asyncio.wait(tasks)

asyncio.run(main())

Server example

.. code-block:: python

import asyncio
import aioftp


async def main():
    server = aioftp.Server([user], path_io_factory=path_io_factory)
    await server.run()

asyncio.run(main())

Or just use simple server

.. code-block:: shell

python -m aioftp --help
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].