8 releases

0.2.1 Jul 21, 2024
0.2.0 May 25, 2024
0.2.0-beta-3 Apr 10, 2024
0.1.1 Mar 30, 2024
0.1.0 Feb 20, 2024

#6 in #ssh2

Apache-2.0

220KB
4K SLoC

RUSFTP

Crates.io License Crates.io Version docs.rs

This is a SFTP implmentation based on russh.

Links:

Rationale

Why another SFTP library?

When I started to work on this project, there were no pure Rust async SFTP client library.

Design principles

rusftp is designed using the following principles:

  • No panics
  • No locking
  • Shared client
  • User facing types have no dependent lifetimes
  • Futures are Send + Sync + 'static
  • Futures are eager

So you can take a SftpClient, clone it, and use it behind a shared referenced. You can start multiple SFTP requests concurrently, even from multiple threads.

Features

  • Client

    • Concurrent requests
    • Cloneable SftpClient and File
    • File (tokio::io abstraction)
    • Dir (futures::stream abstraction)
    • All supported requests and messages
    • Path abstraction
    • Support for well known SFTP extensions
    • User defined extensions
    • Support for direct Byte stream (ie: no russh)
  • Server

  • Protocol Version

    • version 3
    • version 4
    • version 5
    • version 6

Dependencies

~14–24MB
~361K SLoC