FTPGrab pulls files from remote FTP and SFTP servers down to your own machine, NAS or server, on a schedule and without anyone watching. You describe where to connect, what to take and where to put it in one YAML file; FTPGrab walks the source directories, downloads what matches your filters, records what it has already taken, and logs what happened.
It is a Go binary: one static executable for Linux, macOS and Windows, plus the crazymax/ftpgrab container image. There is no database server to keep running — a small local file holds the record of grabbed files, which is how a second run skips everything it already has. That makes it easy to drop on a seedbox-adjacent VPS, a QNAP or Synology NAS, or into a Compose stack beside the rest of your services.
since date filter so only recent files are considered.--schedule and it stays up on its own, or run it one-shot from cron, a systemd timer or a Kubernetes CronJob.uid/gid, chmodFile/chmodDir, retry count, and tempFirst to write to a temporary name and rename on completion so a half-finished file never appears.FTPGRAB_* equivalent, so a container can be configured entirely from its environment.Download the archive for your platform from the releases page, put the binary somewhere on your PATH, and write ftpgrab.yml. A minimal run against one server looks like this:
db:
path: /data/ftpgrab.db
server:
ftp:
host: ftp.example.com
port: 21
username: user
password: secret
sources:
- /incoming
download:
output: /downloads
include:
- .(tar.gz|zip|iso)$
exclude:
- .nfo$
Then run ftpgrab --config=/etc/ftpgrab/ftpgrab.yml once, or add --schedule="0 */6 * * *" and leave it running. --log-json, --log-level and --log-file change the output if you are shipping logs somewhere. The container image takes the same flags: mount the configuration file and the download directory as volumes and run the image with --config pointing at the mounted file.
Related: rclone covers far more back ends (S3, WebDAV, cloud storage) and can mount or sync them, and Syncthing keeps folders in step between your own devices — FTPGrab is the narrower tool for “pull whatever is new off this FTP/SFTP box on a timer”.