| Crates.io | sftpman |
| lib.rs | sftpman |
| version | 2.1.0 |
| created_at | 2025-01-07 09:42:01.519611+00 |
| updated_at | 2025-03-23 08:05:19.001963+00 |
| description | A CLI application and library for managing and mounting sshfs (SFTP) filesystems |
| homepage | https://github.com/spantaleev/sftpman-rs |
| repository | https://github.com/spantaleev/sftpman-rs |
| max_upload_size | |
| id | 1506921 |
| size | 144,415 |
sftpman is a command line application for Linux systems that makes it easy to setup and mount sshfs/SFTP filesystems.
Configuration data is stored as JSON files in $XDG_CONFIG_HOME/sftpman (see the XDG Base Directory Specification) or $HOME/sftpman.
Under the hood, sshfs is used to do all the filesystem mounting work.
Filesystems are mounted locally under the /mnt/sshfs/ directory by default (e.g. /mnt/sshfs/my-fs), but custom mount endpoints are also supported.
There's also a companion 🖥️ GUI application - sftpman-iced.
💡 Note: sftpman used to be written in Python (see sftpman-python) and had an sftman-gtk GUI frontend (also written in Python). Since this Rust rewrite appeared, the old Python-based applications are no longer maintained.
For ArchLinux, there's an sftpman package in the AUR.
For other Linux distributions you can install using cargo:
cargo install sftpman
You also need to:
install sshfs yourself
make sure the /mnt/sshfs directory exists and is writable (e.g. mkdir /mnt/sshfs && chown root:users /mnt/sshfs && chmod 0775 /mnt/sshfs)
Once you've 🚀 installed the CLI application, you can:
sftpman preflight_checksftpman create, sftpman update and sftpman rm, etc.sftpman mount my-fs-1 my-fs-2 or sftpman mount_allsftpman umount my-fs my-fs-2 or sftpman umount_allsftpman ls available, sftman ls mounted or sftpman ls unmountedSee sftpman --help for more information.
sftpman-iced is a frontend for sftpman built with the iced UI library.
💡 Note: Installing the GUI application will automatically pull the library provided here (libsftpman) as a dependency, but will not automatically install the sftpman CLI binary.
You certainly can use sshfs directly or wrap it in your own scripts.
sftpman aims to be a higher-level wrapper around sshfs, so you don't have to do such manual work.
Having a 🖥️ GUI application also makes things easier.
This has been discussed in this old issue.
As should be evident from the project name (sftpman), only SFTP is being targeted.
Other protocols are out of scope for this project.
The Python version of sftpman has worked well for more than a decade (2011-2025), but:
packaging Python application is somewhat annoying. Major Python version upgrades change the site-packages path and necessitate a rebuild.
Rust is very suitable for systems programs (like sftpman). The code is much cleaner and more reliable.
sftpman v2 (and the 🖥️ GUI application - sftpman-iced) are still mostly-backward compatible with the old Python-based sftpman software (sftpman-python and the associated sftman-gtk):
✅ The old configuration files can be read and used as-is
✅ Most CLI commands are the same
✨ You can now use custom local mount endpoints for filesystems, instead of just the default /mnt/sshfs/{id} directory
❌ Some CLI commands for sftpman and their options have different names (sftpman setup being replaced by sftpman create and sftpman update; --auth_method being replaced by --auth_type)