Reference des commandes
analyze
Analyse deux repertoires et identifie les fichiers qui peuvent etre lies par hard links.
Syntaxe
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
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
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
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
Prerequis
- Le fichier
hardlink_fix_plan.txtdoit 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
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
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
Fichiers supprimes
.hardlink_cache.json- Cache des hasheshardlink_fix_plan.txt- Plan de correctionunique_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