⚙️ Configuration

Options et paramètres de CopyToNas

📋 Paramètres de Connexion SFTP

Paramètre CLI Flag Type Requis Description
Hôte --host String Requis Adresse du serveur SFTP (ex: sftp.example.com)
Port --port Integer Optionnel Port SFTP (défaut: 22)
Utilisateur --username String Requis Nom d'utilisateur pour la connexion
Mot de passe --password String Requis Mot de passe d'authentification (jamais stocké)
🔒 Sécurité: Le mot de passe n'est jamais stocké dans le localStorage ou dans des fichiers de configuration. Vous devez le saisir à chaque session pour des raisons de sécurité.

📂 Paramètres de Transfert

Paramètre CLI Flag Type Requis Description
Chemin distant --remote-path String Requis Chemin du fichier ou dossier sur le serveur SFTP
Chemin local --local-path String Requis Répertoire de destination local
Récursif --recursive Boolean Optionnel Active la copie récursive pour les répertoires

Exemples de Chemins

Fichier unique:

--remote-path /home/user/documents/rapport.pdf
--local-path /mnt/nas/archives/

Répertoire complet:

--remote-path /home/user/photos/
--local-path /mnt/nas/backup/
--recursive

📝 Configuration de la Journalisation

Paramètre CLI Flag Valeurs Défaut Description
Niveau de log --log-level Verbose, Debug, Information, Warning, Error, Fatal Information Niveau de détail des logs

Niveaux de Log Détaillés

🔍 Verbose

Usage: Débogage très détaillé

Affiche: Toutes les opérations, y compris les détails internes

--log-level Verbose

🐛 Debug

Usage: Développement et diagnostic

Affiche: Informations de débogage, progression détaillée

--log-level Debug

ℹ️ Information (Défaut)

Usage: Utilisation normale

Affiche: Opérations principales, progression, résultats

--log-level Information

⚠️ Warning

Usage: Production, focus sur les problèmes

Affiche: Avertissements et erreurs uniquement

--log-level Warning

❌ Error

Usage: Production minimale

Affiche: Erreurs uniquement

--log-level Error

🌐 Configuration Web (appsettings.json)

L'interface web utilise un fichier appsettings.json pour sa configuration:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "Kestrel": {
    "Endpoints": {
      "Http": {
        "Url": "http://localhost:5000"
      }
    }
  }
}

Options Configurables

Section Paramètre Description Exemple
Logging LogLevel.Default Niveau de log global "Debug", "Information"
Kestrel Endpoints.Http.Url URL d'écoute du serveur "http://localhost:8080"
AllowedHosts - Hôtes autorisés "*" ou "example.com"

💾 Persistance des Données (localStorage)

L'interface web utilise le localStorage du navigateur pour sauvegarder automatiquement certains paramètres entre les sessions.

Données Sauvegardées

Paramètre Clé localStorage Persisté
Hôte SFTP sftp_host ✅ Oui
Port SFTP sftp_port ✅ Oui
Nom d'utilisateur sftp_username ✅ Oui
Mot de passe - ❌ Non (sécurité)
🔐 Protection: Pour des raisons de sécurité, le mot de passe n'est jamais sauvegardé. Vous devez le saisir à chaque nouvelle session.

Effacer les Données Sauvegardées

Pour effacer les paramètres sauvegardés, ouvrez la console de votre navigateur (F12) et exécutez:

localStorage.clear();

⚡ Configuration de Performance

Suivi de Progression

Le système de suivi de progression est configuré pour optimiser les performances:

Paramètre Valeur Description
Intervalle de mise à jour 500 ms Fréquence minimale entre les mises à jour UI
Seuil de pourcentage 10% Mise à jour forcée tous les 10% de progression
Historique des logs (Web) 50 entrées Nombre de logs affichés en temps réel
Rotation des logs (fichier) Quotidienne Nouveau fichier chaque jour
Rétention des logs 10 jours Les fichiers plus anciens sont supprimés
💡 Astuce: Ces valeurs sont codées en dur pour des performances optimales. Pour les modifier, vous devez ajuster le code source dans src/ProgressStream.cs et web/Services/ProgressReporter.cs.

🔧 Variables d'Environnement

CopyToNas peut également être configuré via des variables d'environnement:

# Niveau de log
export ASPNETCORE_LOGGING__LOGLEVEL__DEFAULT=Debug

# URL de l'application web
export ASPNETCORE_URLS=http://localhost:8080

# Environnement
export ASPNETCORE_ENVIRONMENT=Development

📊 Exemples de Configuration Complète

Scénario 1: Transfert Simple en Production

dotnet run --project src -- \
  --host sftp.prod.example.com \
  --username backup-user \
  --password "SecureP@ssw0rd!" \
  --remote-path /data/backup.tar.gz \
  --local-path /mnt/nas/backups/ \
  --log-level Warning

Cas d'usage: Transfert automatisé avec logs minimaux

Scénario 2: Copie Récursive en Développement

dotnet run --project src -- \
  --host sftp.dev.example.com \
  --port 2222 \
  --username dev-user \
  --password "DevPass123" \
  --remote-path /var/www/html \
  --local-path /home/user/workspace/backup/ \
  --recursive \
  --log-level Debug

Cas d'usage: Développement avec logs détaillés et port personnalisé

Scénario 3: Interface Web sur Port Personnalisé

cd web
export ASPNETCORE_URLS=http://0.0.0.0:8080
export ASPNETCORE_LOGGING__LOGLEVEL__DEFAULT=Information
dotnet run

Cas d'usage: Serveur web accessible depuis d'autres machines du réseau

✅ Validation de Configuration

Checklist de Configuration:
  • ✓ Serveur SFTP accessible (vérifier avec ping ou telnet)
  • ✓ Identifiants SFTP valides
  • ✓ Permissions en lecture sur les fichiers distants
  • ✓ Permissions en écriture sur le répertoire local
  • ✓ Espace disque suffisant pour les transferts
  • ✓ Firewall autorisant les connexions sortantes sur le port SFTP