Script Python de surveillance de dossiers en temps réel avec notifications Telegram instantanées. Idéal pour monitorer des uploads, des backups, ou tout dossier nécessitant une surveillance active.
- 🔍 Surveillance en temps réel — Détection instantanée des nouveaux fichiers, modifications et suppressions
- 📱 Notifications Telegram — Alertes immédiates avec détails du fichier
- 🚀 Service systemd — Démarrage automatique au boot
- 💾 Anti-doublon — Système de debouncing pour éviter les notifications multiples
- 🛡️ Robuste — Gestion des erreurs et reconnexion automatique
- 📂 Multi-dossiers — Surveillance simultanée de plusieurs répertoires
- 🖼️ Aperçu image — Envoi automatique de l'image en aperçu Telegram lors d'une création (jpg, jpeg, png, gif, webp, bmp). Fallback texte si > 10 Mo
- ⚙️ Gestion dynamique — Ajout/suppression de dossiers sans réinstallation
- Python 3.6 ou supérieur
- Accès root (pour l'installation en tant que service)
- Un bot Telegram (gratuit)
- Connexion internet
wget https://raw.githubusercontent.com/xaviergregor/folder_monitor/main/install.sh
chmod +x install.sh
sudo ./install.shLe script vous demandera :
- Le token de votre bot Telegram
- Votre Chat ID
- Les dossiers à surveiller (autant que souhaité)
- Ouvrez Telegram et cherchez @BotFather
- Envoyez
/newbotet suivez les instructions - Copiez le token fourni (format :
123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
- Cherchez @userinfobot sur Telegram
- Envoyez
/start - Copiez votre ID (un nombre comme
123456789)
Cherchez votre bot sur Telegram et cliquez sur Démarrer.
Après installation, utilisez manage.sh pour modifier la liste des dossiers sans réinstaller.
sudo ./manage.sh list📂 Dossiers actuellement surveillés :
1. /var/www/uploads
2. /home/backup/daily
Service : ● actif
sudo ./manage.sh add /chemin/vers/dossierLe dossier est créé automatiquement s'il n'existe pas (avec confirmation). Le service redémarre immédiatement.
sudo ./manage.sh remove /chemin/vers/dossierLe service redémarre immédiatement après la suppression.
sudo ./manage.sh statussudo ./manage.sh uninstallSupprime le service systemd, son fichier de configuration et le répertoire /opt/folder-monitor. Une confirmation est demandée avant toute suppression.
L'aperçu image est activé par défaut à l'installation. Pour le basculer sans réinstaller :
sudo ./manage.sh image-preview on # Activer
sudo ./manage.sh image-preview off # Désactiver
sudo ./manage.sh image-preview # Voir l'état actuelL'état est également visible dans sudo ./manage.sh list.
Note : Toutes les commandes
manage.shnécessitent les droits root (sudo).
Nouveau fichier
📁 Nouveau fichier
📄 document.pdf
📍 Dans: uploads
💾 2.45 Mo
🕒 2025-11-15 14:30:25
Fichier modifié
✏️ Fichier modifié
📄 document.pdf
📍 Dans: uploads
💾 2.46 Mo
🕒 2025-11-15 14:35:10
Fichier ou dossier supprimé
🗑️ Fichier supprimé
📄 document.pdf
📍 Dans: uploads
🕒 2025-11-15 14:40:00
Nouveau fichier image (aperçu envoyé directement dans Telegram)
📁 Nouveau fichier
📄 photo.jpg
📍 Dans: uploads
💾 1.20 Mo
🕒 2025-11-15 14:32:00
[image affichée dans Telegram]
Nouveau dossier
📂 Nouveau dossier
📁 archives_2025
📍 Dans: backup
🕒 2025-11-15 14:31:02
# Démarrer
sudo systemctl start folder-monitor
# Arrêter
sudo systemctl stop folder-monitor
# Redémarrer
sudo systemctl restart folder-monitor
# Statut
sudo systemctl status folder-monitor
# Activer au démarrage
sudo systemctl enable folder-monitor
# Désactiver au démarrage
sudo systemctl disable folder-monitor# Logs en temps réel
sudo journalctl -u folder-monitor -f
# Les 50 dernières lignes
sudo journalctl -u folder-monitor -n 50
# Logs d'aujourd'hui
sudo journalctl -u folder-monitor --since todayModifiez /opt/folder-monitor/monitor.py et remplacez recursive=False par recursive=True :
observer.schedule(event_handler, folder, recursive=True)Puis redémarrez :
sudo systemctl restart folder-monitorAjoutez dans la méthode on_created de monitor.py :
# Surveiller uniquement les images
if not event.src_path.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
returnsudo journalctl -u folder-monitor -n 50 --no-pager
# Tester manuellement
sudo /opt/folder-monitor/venv/bin/python3 /opt/folder-monitor/monitor.pycd /opt/folder-monitor
source venv/bin/activate
pip install watchdog requests- ✅ Vérifiez que le token est correct
- ✅ Assurez-vous d'avoir envoyé
/startà votre bot - ✅ Testez avec curl :
curl -X POST "https://api.telegram.org/bot<VOTRE_TOKEN>/sendMessage" \
-d "chat_id=<VOTRE_CHAT_ID>" \
-d "text=Test"Vérifiez que le service a bien redémarré :
sudo systemctl status folder-monitor
sudo ./manage.sh list- Ne partagez JAMAIS votre token de bot
- N'incluez JAMAIS vos tokens dans des dépôts publics
- Le token est stocké dans
/etc/systemd/system/folder-monitor.service— accès root requis
- CPU : < 1% en idle
- RAM : ~15-20 Mo
- Latence : Détection < 1 seconde
- Fiabilité : Redémarrage automatique en cas d'erreur
- 📸 Surveillance de dossiers d'uploads (photos, documents)
- 💾 Monitoring de backups automatiques
- 📊 Alertes sur nouveaux rapports générés
- 🎬 Notification de nouveaux médias ajoutés
- 📦 Suivi de téléchargements terminés
- 🔄 Monitoring de dossiers de synchronisation
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Xavier Gregor - XGR Solutions
- Watchdog — Bibliothèque de surveillance de fichiers
- La communauté Python 🐍
- 🐛 Issues : GitHub Issues
⭐ Si ce projet vous est utile, n'hésitez pas à lui donner une étoile sur GitHub !