J'ai deux dossiers contenant différents fichiers. Certains fichiers du premier dossier ont une copie exacte dans le deuxième dossier. Je voudrais remplacer ceux par un lien dur. Comment puis je faire ça?
J'ai deux dossiers contenant différents fichiers. Certains fichiers du premier dossier ont une copie exacte dans le deuxième dossier. Je voudrais remplacer ceux par un lien dur. Comment puis je faire ça?
Réponses:
Je connais 4 solutions en ligne de commande pour linux. Mon préféré est le dernier répertorié ici, rdfind
en raison de toutes les options disponibles.
fdupes
Exemple de sortie (avec les options "show size", "recursive"):
$ fdupes -Sr .
17 bytes each:
./Dir1/Some File
./Dir2/SomeFile
lien dur
--dry-run
option. Exemple de sortie (notez que mes deux fichiers ont des temps de modification légèrement différents, donc lors de la deuxième exécution, je lui dis d'ignorer cela):
$ stat Dir*/* | grep Modify
Modify: 2015-09-06 23:51:38.784637949 -0500
Modify: 2015-09-06 23:51:47.488638188 -0500
$ hardlink --dry-run -v .
Mode: dry-run
Files: 5
Linked: 0 files
Compared: 0 files
Saved: 0 bytes
Duration: 0.00 seconds
$ hardlink --dry-run -v -t .
[DryRun] Linking ./Dir2/SomeFile to ./Dir1/Some File (-17 bytes)
Mode: dry-run
Files: 5
Linked: 1 files
Compared: 1 files
Saved: 17 bytes
Duration: 0.00 seconds
duff
Exemple de sortie (avec option "récursif"):
$ duff -r .
2 files in cluster 1 (17 bytes, digest 34e744e5268c613316756c679143890df3675cbb)
./Dir2/SomeFile
./Dir1/Some File
rdfind
find
?).Exemple de sortie:
$ rdfind -dryrun true -makehardlinks true .
(DRYRUN MODE) Now scanning ".", found 5 files.
(DRYRUN MODE) Now have 5 files in total.
(DRYRUN MODE) Removed 0 files due to nonunique device and inode.
(DRYRUN MODE) Now removing files with zero size from list...removed 0 files
(DRYRUN MODE) Total size is 13341 bytes or 13 kib
(DRYRUN MODE) Now sorting on size:removed 3 files due to unique sizes from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on md5 checksum:removed 0 files from list.2 files left.
(DRYRUN MODE) It seems like you have 2 files that are not unique
(DRYRUN MODE) Totally, 17 b can be reduced.
(DRYRUN MODE) Now making results file results.txt
(DRYRUN MODE) Now making hard links.
hardlink ./Dir1/Some File to ./Dir2/SomeFile
Making 1 links.
$ cat results.txt
# Automatically generated
# duptype id depth size device inode priority name
DUPTYPE_FIRST_OCCURRENCE 1 1 17 2055 24916405 1 ./Dir2/SomeFile
DUPTYPE_WITHIN_SAME_TREE -1 1 17 2055 24916406 1 ./Dir1/Some File
# end of file
Duplicate Commander est une solution possible sous Windows:
Duplicate Commander est une application gratuite qui vous permet de rechercher et de gérer des fichiers en double sur votre PC. Duplicate Commander est livré avec de nombreuses fonctionnalités et outils qui vous permettent de récupérer votre espace disque à partir de ces doublons.
Fonctionnalités:
Replacing files with hard links Replacing files with soft links ... (and many more) ...
Pour Linux, vous pouvez trouver un script Bash ici .
Duplicate & Same File Searcher est encore une autre solution sur Windows:
Duplicate & Same Files Searcher (Duplicate Searcher) est une application pour rechercher des fichiers en double (clones) et des liens durs NTFS vers le même fichier. Il recherche le contenu des fichiers en double quel que soit le nom du fichier (une véritable comparaison octet à octet est utilisée). Cette application permet non seulement de supprimer les fichiers en double ou de les déplacer vers un autre emplacement, mais également de remplacer les doublons par des liens durs NTFS (unique!)
J'avais un outil gratuit astucieux sur mon ordinateur appelé Link Shell Extension; non seulement c'était génial pour créer des liens physiques et des liens symboliques, mais aussi des jonctions! De plus, il a ajouté des icônes personnalisées qui vous permettent d'identifier facilement différents types de liens, même ceux qui existaient déjà avant l'installation; Les flèches rouges représentent les liens durs par exemple, tandis que le vert représente les liens symboliques ... et les chaînes représentent les jonctions.
J'ai malheureusement désinstallé le logiciel il y a quelque temps (lors d'une désinstallation en masse de divers programmes), donc je ne peux plus créer de liens manuellement, mais les icônes apparaissent toujours automatiquement chaque fois que Windows détecte un lien dur, symbolique ou de jonction.
Je recommande fortement jdupes . Il s'agit d'une fourchette améliorée de fdupes , mais comprend également:
--linkhard
, ou -L
pour faire courtPour votre question, vous pouvez simplement exécuter $ jdupes -L /path/to/your/files
.
Vous voudrez peut-être cloner et créer la dernière source à partir de son référentiel GitHub car le projet est toujours en cours de développement.
Les binaires Windows sont également fournis ici. Des binaires packagés sont disponibles dans certaines distributions Linux / BSD - en fait, je l'ai trouvé pour la première fois $ apt search
.