---
title: FTPGrab
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, file-transfer-and-sync, ftp, grabber, backup, go]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=file-transfer-and-sync]
---

# FTPGrab 🛰️
> Synchronisateur automatique de serveurs FTP/FTPS/SFTP distants (Go).

| Métadonnée | Valeur |
| :--- | :--- |
| **Site web** | https://github.com/ftpgrab/ftpgrab |
| **GitHub** | https://github.com/ftpgrab/ftpgrab |
| **License** | MIT |
| **Langage** | Go |
| **Étoiles** | 1500+ |
| **Dernière MAJ** | 2024 |
| **Catégorie** | [[cat-file-transfer-and-sync]] |

## Description
FTPGrab est un outil de **synchronisation descendante** (grab) conçu pour aspirer régulièrement des fichiers déposés sur un serveur FTP/FTPS/SFTP distant vers un stockage local (ou S3, GCS, Azure Blob, etc.). Il est typiquement utilisé par les **hébergeurs, photographes, comptables** qui déposent leurs fichiers sur un FTP mutualisé et veulent les rapatrier automatiquement sans cron artisanal.

L'outil se configure via un simple **fichier YAML** (connection FTP, SFTP, FTPS, S3 + destination locale ou cloud + filtres par extension, regex, taille, date). Il tourne ensuite en **mode one-shot** (CLI cronable) ou en **daemon** avec scheduling intégré (`@every 30m`, cron expr). Une **notification Discord/Slack/Mattermost** est envoyée à chaque fichier récupéré.

FTPGrab est l'évolution moderne et multi-protocole de `lftp mirror`. Il supporte les **gros fichiers**, la **reprise sur erreur**, le **rate-limiting** et la **déduplication** par hash. Une **image Docker** officielle est publiée sur Docker Hub et Quay.

## Installation
### Docker Compose
```yaml
services:
  ftpgrab:
    image: ghcr.io/ftpgrab/ftpgrab:latest
    container_name: ftpgrab
    environment:
      - FTPGRAB_SCHEDULE=@every 15m
      - FTPGRAB_LOG_LEVEL=info
    volumes:
      - ./config:/app/config
      - /srv/grabbed:/app/data
    restart: unless-stopped
```

### Binaire natif
```bash
wget -qO- https://github.com/ftpgrab/ftpgrab/releases/latest/download/ftpgrab_linux_amd64.tar.gz | tar xz
sudo mv ftpgrab /usr/local/bin/
ftpgrab --config /etc/ftpgrab.yml
```

## Configuration
Fichier `ftpgrab.yml` :
```yaml
schedule: "@every 30m"
download:
  timeout: 30s
  retry: 3
connection:
  protocol: sftp
  host: ftp.example.com
  port: 22
  username: user
  password: ***  private_key: /keys/id_rsa
  sources:
    - /incoming
  destination: /app/data
filters:
  file_name_regex: ".*\\.zip$"
  file_size_max: "500MB"
notifications:
  notifier: "slack"
  notifier_params:
    webhook: "https://hooks.slack.com/services/XXX/YYY/ZZZ"
```

## Alternatives
- **Open source** : `lftp` + cron, `rsync` (sur SSH), [[app-rclone]] (bidirectionnel), MirrorCommand, [[app-syncthing]] (P2P), curl + script bash.
- **Propriétaire** : GoodSync, FTPGetter, WinSCP (scriptable).

## Sécurité
- Connexion SFTP (SSH) chiffrée bout-en-bout par défaut.
- FTPS supporte TLS 1.2+ (désactiver SSLv3).
- Authentification par clé SSH recommandée pour SFTP.
- Stockage des secrets via variables d'environnement ou fichier de config chmod 600.
- Logs sans mot de passe (redaction auto).
- Notifications sur webhook : attention à l'exposition d'URLs sensibles.

## Ressources
- Documentation : https://github.com/ftpgrab/ftpgrab#readme
- Exemples YAML : https://github.com/ftpgrab/ftpgrab/tree/main/example
- Releases : https://github.com/ftpgrab/ftpgrab/releases

## Pages Liées
- [[cat-file-transfer-and-sync]] — Catégorie parente
- [[app-sftpgo]] — SFTP server
- [[app-rclone]] — Multi-cloud sync
- [[app-gomft]] — Managed File Transfer
- [[recettes-docker-compose]] — Modèles de stacks
