ftpgrab is a free, open source orchestration & scheduling project written in Go and released under MIT. It has 566 GitHub stars, 79 forks and 28 open issues, and was last pushed 10 days ago. On this registry it ranks #128 of 130 tracked projects in Orchestration & Scheduling, with 5 head-to-head comparisons available. It gained 3 stars over the last 30 tracked days.

What is ftpgrab?

FTPGrab is an MIT-licensed Go command-line tool and container image that pulls files from remote FTP and SFTP servers onto a NAS, server, or computer on a schedule, built for unattended transfers in seedbox, home server, and similar setups.

What it is

FTPGrab is a Go command-line tool that copies files from remote FTP and SFTP servers into local storage. It is distributed two ways: as a single executable published on the project's GitHub releases page, and as a container image, crazymax/ftpgrab, on Docker Hub. Documentation lives at crazymax.dev/ftpgrab. The licence is MIT, and the repository carries the ftp, sftp, ssh, scheduler, seedbox, nas, qnap, docker, and go topics.

The concrete problem it solves is moving files that accumulate on a remote host to local storage without manual work. Instead of an operator logging into an FTP or SFTP host, listing directories, and dragging files down again and again, FTPGrab points at one or more remote sources, runs on a schedule, filters what should be downloaded, and avoids re-downloading files that were already grabbed. It replaces that repeated manual pull, and the ad-hoc scripts written for it, with a scheduled job that knows what it has already collected and reports what each run did.

Key capabilities

  • Pulls files from remote FTP and SFTP servers, including SFTP over SSH, into local storage on a NAS, server, or computer.
  • Accepts one or more remote sources in the same configuration, so several hosts can feed one local destination.
  • Runs on a schedule for unattended transfers rather than on-demand invocation.
  • Filters which files should be downloaded, leaving unrelated content on the remote host alone.
  • Avoids re-downloading files already grabbed, keeping repeat runs cheap.
  • Sends notifications after runs, covering successful downloads, failures, and other run activity.
  • Ships as a single executable from the GitHub releases page and as the Docker Hub image crazymax/ftpgrab.

Who uses it and how

  • Seedbox owners who need files pulled from a remote seedbox to home storage without logging in daily.
  • Home server and NAS operators, including QNAP devices, where local storage is the archive and the remote host is transient.
  • Unattended setups where the job runs on a schedule and notification output replaces a person watching progress.
  • Environments consolidating several remote sources onto one local machine.
  • Hosts where only FTP or SFTP access exists, so no API or cloud backend is required on the remote side.

Getting started

Download the single executable from the GitHub releases page, or deploy the container image crazymax/ftpgrab from Docker Hub. Configuration, usage, and full documentation are at crazymax.dev/ftpgrab.

How it compares

The facts provide no list of paid products that FTPGrab replaces, and they name no comparable tools, so FTPGrab stands alone in this registry. Its real contrast is with the manual process it automates: hand-run FTP or SFTP transfers, or bespoke scripts, neither of which handles scheduling, filtering, de-duplication, and run notifications in one MIT-licensed binary.

When to use it — and when not to

Choose it when the job is unattended, scheduled pulling from FTP or SFTP into local storage, and when operating a small binary or container is acceptable. A self-hoster still runs the tool on a machine that stays up, holds FTP or SFTP credentials for every source, and configures notification delivery if run reports are wanted. It is the wrong pick for anyone needing two-way sync, cloud storage backends, or a hosted service with a graphical interface; the repository also carries 28 open issues, and the README is brief, with the substantive documentation held on the project site instead.

project readme (upstream, from github) — read inline

Documentation GitHub release Total downloads Build Status Docker Stars Docker Pulls
Codecov Become a sponsor Donate Paypal

About

FTPGrab is a command-line tool for pulling files from remote FTP and SFTP servers to your NAS, server, or computer. It is built for unattended transfers: you can point it at one or more remote sources, run it on a schedule, filter what should be downloaded, and avoid re-downloading files that were already grabbed. It can also send notifications after runs, so you can keep track of successful downloads, failures, and other activity without babysitting the job.

It works well for seedboxes, home servers, and any setup where files need to move reliably from a remote server to local storage. FTPGrab is available as a single executable and as a container image.

[!TIP] Want to be notified of new releases? Check out 🔔 Diun (Docker Image Update Notifier) project!

Documentation

Documentation can be found on https://crazymax.dev/ftpgrab/

Contributing

Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by becoming a sponsor on GitHub or by making a PayPal donation to ensure this journey continues indefinitely!

Thanks again for your support, it is much appreciated! :pray:

License

MIT. See LICENSE for more details.
Icon credit to Nick Roach.

Frequently asked questions

Is ftpgrab free to use?

ftpgrab is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does ftpgrab do?

Grab your files periodically from a remote FTP or SFTP server easily

What is ftpgrab written in?

ftpgrab is primarily written in Go. Its source is publicly available at https://github.com/crazy-max/ftpgrab, and it has 566 GitHub stars.