Home

Awesome

remotefs

<p align="center"> <img src="/assets/logo.png" alt="logo" width="256" height="256" /> </p> <p align="center"> <a href="https://veeso.github.io/remotefs/blob/main/CHANGELOG.md" target="_blank">Changelog</a> · <a href="https://veeso.github.io/remotefs/#get-started" target="_blank">Get started</a> · <a href="https://docs.rs/remotefs" target="_blank">Documentation</a> </p> <p align="center">~ The Omni Filetransfer Client Library (and more!) ~</p> <p align="center">Developed by <a href="https://veeso.github.io/" target="_blank">@veeso</a></p> <p align="center">Current version: 0.3.1 (22/10/2024)</p> <p align="center"> <a href="https://opensource.org/licenses/MIT" ><img src="https://img.shields.io/badge/License-MIT-teal.svg" alt="License-MIT" /></a> <a href="https://github.com/veeso/remotefs-rs/stargazers" ><img src="https://img.shields.io/github/stars/veeso/remotefs-rs.svg?style=badge" alt="Repo stars" /></a> <a href="https://crates.io/crates/remotefs" ><img src="https://img.shields.io/crates/d/remotefs.svg" alt="Downloads counter" /></a> <a href="https://crates.io/crates/remotefs" ><img src="https://img.shields.io/crates/v/remotefs.svg" alt="Latest version" /></a> <a href="https://ko-fi.com/veeso"> <img src="https://img.shields.io/badge/donate-ko--fi-red" alt="Ko-fi" /></a> </p> <p align="center"> <a href="https://github.com/veeso/remotefs-rs/actions" ><img src="https://github.com/veeso/remotefs-rs/workflows/Linux/badge.svg" alt="Linux CI" /></a> <a href="https://github.com/veeso/remotefs-rs/actions" ><img src="https://github.com/veeso/remotefs-rs/workflows/MacOS/badge.svg" alt="MacOS CI" /></a> <a href="https://github.com/veeso/remotefs-rs/actions" ><img src="https://github.com/veeso/remotefs-rs/workflows/Windows/badge.svg" alt="Windows CI" /></a> <a href="https://coveralls.io/github/veeso/remotefs-rs" ><img src="https://coveralls.io/repos/github/veeso/remotefs-rs/badge.svg" alt="Coveralls" /></a> <a href="https://docs.rs/remotefs" ><img src="https://docs.rs/remotefs/badge.svg" alt="Docs" /></a> </p>

About remotefs ☁️

remotefs is a library that provides a file system structure to work with all the most popular 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, Kube, Ftp, WebDAV and Aws-s3 as external libraries.

Why remotefs ❓

You might be wondering, "why remotefs?" The first and foremost reason is to provide a generic interface over multiple protocols. For example, in termscp it allows the support of multiple protocols without any protocol-specific code. The second reason is that often, users just want a simple way to operate on a remote file system, however, they don't have the time to spend researching the ins and outs of each protocol.

Using remotefs, this is no longer a problem: all you need is to configure the options to your liking, then you're ready to connect.


Features 🎁


Get started 🚀

First, add remotefs to your list of dependencies:

remotefs = "^0.3.0"

select over a variety of features:

Client libraries 🔌

To use an existing client, you must add them to your Cargo.toml, along with remotefs:


Remote file system 💾

As mentioned earlier, this library exposes a trait called RemoteFs. This trait exposes several methods to operate on a remote file system via the chosen client.

Let's briefly go over which methods are available:

Client compatibility table ✔️

The following table states the compatibility for each client associated with the remote file system trait method.

Note: connect(), disconnect() and is_connected() MUST always be supported, and are so omitted in the table.

Client/MethodAws-S3FtpKubeScpSftpSmbWebDAV
append_fileNoYesNoNoYesYesNo
appendNoYesNoNoYesNoNo
change_dirYesYesYesYesYesYesYes
copyNoNoYesYesYesNoNo
create_dirYesYesYesYesYesYesYes
create_fileYesYesYesYesYesYesYes
createNoYesNoYesYesNoNo
execNoNoYesYesYesNoNo
existsYesYesYesYesYesYesYes
list_dirYesYesYesYesYesYesYes
movNoYesYesYesYesYesYes
open_fileYesYesYesYesYesYesYes
openNoYesNoYesYesNoNo
pwdYesYesYesYesYesYesYes
remove_dir_allYesYesYesYesYesYesYes
remove_dirYesYesYesYesYesYesYes
remove_fileYesYesYesYesYesYesYes
setstatNoNoYesYesYesNoNo
statYesYesYesYesYesYesYes
symlinkNoNoYesYesYesYesNo

Support the developer ☕

If you like remotefs and you're grateful for the work I've done, please consider a little donation 🥳

You can make a donation on the following platforms:

ko-fi PayPal


Apps using remotefs 🚀


Contributing and issues 🤝🏻

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 leave a pull request.

Please follow our contributing guidelines


Changelog ⏳

View remotefs` changelog HERE


License 📃

remotefs is licensed under the MIT license.

You can read the entire license HERE