Reference des commandes

analyze

Analyse deux repertoires et identifie les fichiers qui peuvent etre lies par hard links.

Syntaxe

dotnet run -- analyze <repertoire_A> <repertoire_B> [options]

Arguments

Argument Description Requis
repertoire_A Chemin vers le premier repertoire (source) Oui
repertoire_B Chemin vers le second repertoire (destination) Oui

Exemple

# Analyser deux repertoires de backup dotnet run -- analyze "/mnt/backup1" "/mnt/backup2" # Avec exclusions dotnet run -- analyze "/data/A" "/data/B" --exclude ".log,.tmp"

Sortie

Genere le fichier hardlink_fix_plan.txt avec le format :

/chemin/vers/B/fichier1.txt /chemin/vers/A/fichier1.txt /chemin/vers/B/sous-dossier/fichier2.txt /chemin/vers/A/sous-dossier/fichier2.txt

analyze-fast

Version optimisee de l'analyse pour les gros fichiers avec cache persistant.

Syntaxe

dotnet run -- analyze-fast <repertoire_A> <repertoire_B> [options]

Particularites

  • Hash partiel : Pour les fichiers >100 MB, calcule d'abord un hash sur debut + milieu + fin
  • Cache persistant : Stocke les hashes dans .hardlink_cache.json
  • Invalidation automatique : Le cache est invalide si la date ou taille du fichier change
  • Progression detaillee : Affiche le nombre de fichiers traites et la taille

Exemple

# Analyse rapide de gros repertoires dotnet run -- analyze-fast "/media/videos" "/backup/videos" # Sortie typique : # [1/1000] Traitement: video.mkv (4.5 GB) # [Hash partiel] video.mkv: a1b2c3d4... # [Correspondance!] Calcul du hash complet... # [500/1000] Progression: 50% complete

unique Nouveau

Detecte les fichiers presents uniquement dans l'un des deux repertoires.

Syntaxe

dotnet run -- unique <repertoire_A> <repertoire_B>

Exemple

# Identifier les fichiers uniques dotnet run -- unique "/photos/2023" "/photos/backup" # Genere unique_files_report.txt avec : # === Fichiers uniques dans A === # /photos/2023/vacances/IMG_001.jpg (5.2 MB) # /photos/2023/vacances/IMG_002.jpg (4.8 MB) # # === Fichiers uniques dans B === # /photos/backup/anciens/photo.jpg (2.1 MB)

Sortie

Genere le fichier unique_files_report.txt contenant :

  • Liste des fichiers uniques dans A
  • Liste des fichiers uniques dans B
  • Taille de chaque fichier
  • Statistiques globales

copy-unique Nouveau

Cree des hard links pour les fichiers uniques de A vers B avec conservation de l'arborescence.

Syntaxe

dotnet run -- copy-unique <repertoire_A> <repertoire_B> [--dry-run] [--yes]

Options

Option Description
--dry-run Simulation : affiche les operations sans les executer
--yes Confirmation automatique : execute sans demander confirmation

Exemples

# 1. Simulation (recommandee) dotnet run -- copy-unique "/data/A" "/data/B" --dry-run # Affiche ce qui serait fait sans modifier les fichiers # 2. Execution interactive dotnet run -- copy-unique "/data/A" "/data/B" # Affiche le plan et demande confirmation (o/n) # 3. Execution automatique (pour scripts) dotnet run -- copy-unique "/data/A" "/data/B" --yes # Execute sans confirmation

Comportement

  • Cree les repertoires manquants dans B
  • Preserve la structure complete de l'arborescence
  • Detecte et signale les conflits potentiels
  • Utilise des hard links (0 espace disque supplementaire)

apply

Applique le plan de correction genere par analyze.

Syntaxe

dotnet run -- apply

Prerequis

  • Le fichier hardlink_fix_plan.txt doit exister
  • Acces en ecriture aux repertoires cibles
  • Les fichiers source et destination doivent etre sur le meme systeme de fichiers

Exemple

# Appliquer le plan dotnet run -- apply # Sortie typique : # Application du plan de correction... # [1/50] Creation hard link: /B/fichier1.txt -> /A/fichier1.txt [OK] # [2/50] Creation hard link: /B/fichier2.txt -> /A/fichier2.txt [OK] # ... # Termine: 50 hard links crees, 0 erreurs

verify

Verifie si deux fichiers sont lies par hard link.

Syntaxe

dotnet run -- verify <fichier1> <fichier2>

Exemple

# Verifier deux fichiers dotnet run -- verify "/data/A/document.pdf" "/data/B/document.pdf" # Sorties possibles : # Les fichiers sont lies par hard link (meme inode: 12345678) # ou # Les fichiers ne sont PAS lies par hard link (inodes differents: 12345 vs 67890)

cache-stats

Affiche les statistiques du cache de hashes.

Syntaxe

dotnet run -- cache-stats

Exemple

dotnet run -- cache-stats # Sortie : # === Statistiques du cache === # Fichier: .hardlink_cache.json # Entrees: 1,234 # Taille: 256 KB # Derniere modification: 2024-01-15 14:30:00

clean

Supprime les fichiers generes (cache, plans, rapports).

Syntaxe

dotnet run -- clean

Fichiers supprimes

  • .hardlink_cache.json - Cache des hashes
  • hardlink_fix_plan.txt - Plan de correction
  • unique_files_report.txt - Rapport des fichiers uniques

Options de filtrage

--exclude

Exclut des extensions specifiques de l'analyse.

# Exclure les fichiers log et temporaires dotnet run -- analyze "/A" "/B" --exclude ".log,.tmp,.bak" # Exclure les fichiers de build dotnet run -- analyze "/A" "/B" --exclude ".dll,.exe,.pdb"

--exclude-media

Exclut automatiquement les fichiers multimedia courants.

# Ignorer videos, musiques, images dotnet run -- analyze "/A" "/B" --exclude-media # Extensions exclues: .mp4, .mkv, .avi, .mov, .mp3, .flac, .wav, etc.

--exclude-dev

Exclut les dossiers et fichiers de developpement.

# Ignorer .git, node_modules, bin, obj, etc. dotnet run -- analyze "/A" "/B" --exclude-dev

Options d'execution

--dry-run

Simule l'operation sans modifier les fichiers.

# Voir ce qui serait fait dotnet run -- copy-unique "/A" "/B" --dry-run

--yes

Confirme automatiquement toutes les operations.

# Execution sans confirmation (pour scripts) dotnet run -- copy-unique "/A" "/B" --yes

--verbose

Affiche des informations detaillees pendant l'execution.

# Mode verbeux dotnet run -- analyze "/A" "/B" --verbose