Ruggi.Site Ruggi.Site
Tools · Local App

ftpsuite

Four small FTP tools that share one config and move files in both directions: a push, a pull, a terminal UI, and a windowed UI. Define a site and its folder pairs once — every tool can use them. POSIX shell + lftp; the windowed UI is Tcl/Tk. No Python anywhere.

The four tools

⬆️

ftpush upload

Upload files and folders. Reports each one as Created or Overwritten.

ftpush -s 2 index.html assets/

⬇️

ftpull download

Download — the mirror image of ftpush. --mirror pulls a whole pair (or site) down in one go.

ftpull --mirror -s 1

⌨️

ftps-cli terminal UI

Terminal UI (ncurses). Queue transfers across any sites and pairs, both directions, then run them all at once.

ftps-cli

🖥️

ftps-gui windowed UI

Windowed two-pane view, Midnight-Commander style — LOCAL | REMOTE, multi-select, up/down transfer.

ftps-gui

How the config works

Every tool reads one shared file — ~/.config/ftpush/ftpush.json. It holds sites (host / port / user / password) and, per site, any number of source ↔ destination pairs (a local directory mapped to a remote directory). Point a tool at a path and it finds the pair whose prefix is the longest match and substitutes the other side — so the same command works no matter how deeply nested the file is, in either direction.

Sites are selected by number everywhere (ftpush --sites lists them). Manage everything from either CLI tool:

ftpush --add-site        # name, host, port, user, masked password
ftpush --add-pair -s 1   # a local dir  <->  remote dir
ftpush --pairs -s 1      # list a site's pairs, numbered
ftpush --export backup.json   # ftpush --import backup.json to restore

Install

tar -xzf ftpsuite.tar.gz
cd ftpsuite
sh ftpsuite-install.sh

The installer puts the four tools on your PATH, installs the shared library and the four man pages, and installs the dependencies it finds missing — lftp (required), dialog (for ftps-cli), and tk (for ftps-gui) — via your system package manager (apt/nala, pacman, dnf, zypper, apk, or Homebrew). It never touches your config.

First run

# add a site + a folder pair
ftpush --add-site
ftpush --add-pair

# then, in either direction:
ftpush  /home/me/site/index.html      # upload
ftpull  /public_html/index.html       # download
ftps-cli                              # terminal UI
ftps-gui                              # windowed UI

Full docs: man ftpush, man ftpull, man ftps-cli, man ftps-gui (each tool also has --help).

Notes

  • Runs identically under sh, bash, and zsh.
  • No Python — POSIX shell + lftp; the windowed UI is Tcl/Tk.
  • Credentials live only in your local config file (0600), read at run time.
  • Free & open, no signup. Your data and credentials stay on your machine.