# fuseftp-cli
Command-line tool for mounting FTP servers as FUSE filesystems.
## Installation
```sh
cargo build --release
sudo install target/release/fuseftp /usr/local/bin/
```
## Usage
```sh
fuseftp [OPTIONS] <ADDRESS> <TARGET>
```
Unless `--auto-unmount` is passed, the filesystem must be manually unmounted
with `umount(8)` after the process terminates.
The `ADDRESS` argument specifies the FTP server, optionally with a port (e.g.,
`ftp.example.com:2121`). If no port is specified, a default of 21 or 990 is used
depending on security type.
The `TARGET` argument specifies where to mount the filesystem. This is typically
a directory path, which will be created if it does not exist. Alternatively, a
file descriptor path (`/dev/fd/N`) can be passed for socket activation.
## Options
| `-u, --user <USER>` | Username (anonymous login when omitted) |
| `--password-file <PATH>` | Read password from file |
| `--password-stdin` | Read password from stdin |
| `-s, --security <MODE>` | `plain`, `explicit` (default), or `implicit` |
| `-m, --connection-mode <MODE>` | `active`, `passive` (default), or `extended-passive` |
| `-t, --timeout <SECONDS>` | Connection timeout (default: 30, 0 to disable) |
| `-v, --verbose` | Show connection and mount progress |
| `-d, --debug` | Show detailed internal operations |
| `--allow-write` | Allow write access |
| `--allow-exec` | Allow execution of binaries |
| `--access <MODE>` | Who can access the mount: `private` (default), `root`, or `all` |
| `--auto-unmount` | Unmount when the process exits |
| `--check-permissions` | Enable kernel permission checking |
| `-h, --help` | Print help message and exit |
| `--version` | Print version information and exit |
## Examples
```sh
# Anonymous mount
fuseftp ftp.example.com /mnt/ftp
# Authenticated mount
fuseftp --user myuser --password-stdin ftp.example.com /mnt/ftp
# Read-write with verbose logging
fuseftp --allow-write --verbose ftp.example.com /mnt/ftp
# Implicit FTPS (defaults to port 990)
fuseftp --security implicit ftps.example.com /mnt/ftps
# Custom port
fuseftp ftp.example.com:2121 /mnt/ftp
```
## Related Crates
- [fuseftp](https://crates.io/crates/fuseftp) - Library for programmatic use
- [fuseftp-mount-helper](https://crates.io/crates/fuseftp-mount-helper) - mount(8) integration
## License
MIT or Apache-2.0