Files
wiki/Catalogue-Self-Hosted/apps/app-ftpgrab.md
T
2026-06-09 18:40:21 +02:00

103 lines
3.6 KiB
Markdown

---
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