Changelog · Get started · Documentation
~ The Omni Filetransfer Client Library (and more!) ~
Developed by @veeso
Current version: 0.1.1 (09/12/2021)
remotefs is a library that provides a file system structure to work with all the most used file transfer protocols.
This is achieved through a trait called RemoteFs
which exposes methods to operate on the remote file system.
Currently the library exposes a client for Sftp, Scp, Ftp and Aws-s3.
You might be wondering what's the reasons behind remotefs. The first reason is to provide an easy way to operate with multiple protocols at the same time. For example, in termscp, this came very handily to me. The second reason is that often, users need to implement just a simple client to operate on a remote file system, and they have to waste a lot of time in understanding how the protocol works just to achieve a single task.
With remotefs this is no more a problem: all you need is to configure the options to connect to the remote host and you're ready to deal with the remote file system, as it were mounted on your pc.
First of all, add remotefs
to your project dependencies:
toml
remotefs = "^0.1.0"
by default, these features are enabled: ssh
these features are supported:
aws-s3
: enable Aws-s3 clientftp
: enable Ftp clientssh
: enable Ssh clientno-log
: disable logging. By default, this library will log via the log
crate.As stated in the introduction, this library exposes a trait for each client called RemoteFs
.
This trait exposes several methods to operate on the remote file system, via the chosen client.
Let's briefly see which methods are available:
The following table states the compatibility for each protocol client and the remote file system trait method.
Note: connect()
, disconnect()
and is_connected()
MUST always be supported, and are so omitted in the table.
| Client/Method | Aws-S3 | Ftp | Scp | Sftp | |----------------|--------|-----|-----|------| | appendfile | No | Yes | No | Yes | | append | No | Yes | No | Yes | | changedir | Yes | Yes | Yes | Yes | | copy | No | No | Yes | Yes | | createdir | Yes | Yes | Yes | Yes | | createfile | Yes | Yes | Yes | Yes | | create | No | Yes | Yes | Yes | | exec | No | No | Yes | Yes | | exists | Yes | Yes | Yes | Yes | | listdir | Yes | Yes | Yes | Yes | | mov | No | Yes | Yes | Yes | | openfile | Yes | Yes | Yes | Yes | | open | No | Yes | Yes | Yes | | pwd | Yes | Yes | Yes | Yes | | removedirall | Yes | Yes | Yes | Yes | | removedir | Yes | Yes | Yes | Yes | | removefile | Yes | Yes | Yes | Yes | | setstat | No | No | Yes | Yes | | stat | Yes | Yes | Yes | Yes | | symlink | No | No | Yes | Yes |
If you like remotefs and you're grateful for the work I've done, please consider a little donation 🥳
You can make a donation with one of these platforms:
Contributions, bug reports, new features, and questions are welcome! 😉 If you have any questions or concerns, or you want to suggest a new feature, or you want just want to improve remotefs, feel free to open an issue or a PR.
Please follow our contributing guidelines
View remotefs' changelog HERE
remotefs is powered by these aweseome projects:
remotefs is licensed under the MIT license.
You can read the entire license HERE