Ich habe zwei Ordner mit verschiedenen Dateien. Einige Dateien aus dem ersten Ordner haben eine exakte Kopie im zweiten Ordner. Ich möchte diese durch einen festen Link ersetzen. Wie kann ich das machen?
Ich habe zwei Ordner mit verschiedenen Dateien. Einige Dateien aus dem ersten Ordner haben eine exakte Kopie im zweiten Ordner. Ich möchte diese durch einen festen Link ersetzen. Wie kann ich das machen?
Antworten:
Ich kenne 4 Kommandozeilenlösungen für Linux. Mein bevorzugter ist der letzte, der hier aufgelistet ist rdfind
, da alle verfügbaren Optionen vorhanden sind.
fdupes
Beispielausgabe (mit den Optionen "Größe anzeigen", "rekursiv"):
$ fdupes -Sr .
17 bytes each:
./Dir1/Some File
./Dir2/SomeFile
Hardlink
--dry-run
Option. Beispielausgabe (beachten Sie, dass meine beiden Dateien geringfügig unterschiedliche Änderungszeiten haben, sodass ich sie im zweiten Durchgang anweise, dies zu ignorieren):
$ 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
Beispielausgabe (mit Option "rekursiv"):
$ duff -r .
2 files in cluster 1 (17 bytes, digest 34e744e5268c613316756c679143890df3675cbb)
./Dir2/SomeFile
./Dir1/Some File
rdfind
find
?).Beispielausgabe:
$ 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 ist eine mögliche Lösung unter Windows:
Duplicate Commander ist eine Freeware-Anwendung, mit der Sie doppelte Dateien auf Ihrem PC finden und verwalten können. Duplicate Commander verfügt über zahlreiche Funktionen und Tools, mit denen Sie Ihren Speicherplatz aus diesen Duplikaten wiederherstellen können.
Eigenschaften:
Replacing files with hard links Replacing files with soft links ... (and many more) ...
Für Linux können Sie ein Bash - Skript finden hier .
Duplicate & Same File Searcher ist eine weitere Lösung unter Windows:
Duplicate & Same Files Searcher (Duplicate Searcher) ist eine Anwendung zum Suchen von doppelten Dateien (Klonen) und NTFS-Hardlinks zu derselben Datei. Unabhängig vom Dateinamen werden doppelte Dateiinhalte durchsucht (es wird ein echter Byte-zu-Byte-Vergleich verwendet). Mit dieser Anwendung können nicht nur doppelte Dateien gelöscht oder an einen anderen Speicherort verschoben werden, sondern auch doppelte Dateien durch feste NTFS-Links ersetzt werden (einzigartig!).
Ich hatte ein raffiniertes kostenloses Tool auf meinem Computer namens Link Shell Extension. Es war nicht nur großartig, um harte Links und symbolische Links zu erstellen, sondern auch Junctions! Darüber hinaus wurden benutzerdefinierte Symbole hinzugefügt, mit denen Sie auf einfache Weise verschiedene Arten von Links identifizieren können, auch solche, die bereits vor der Installation vorhanden waren. Rote Pfeile stehen beispielsweise für harte Links, während grüne für symbolische Links und Ketten für Kreuzungen stehen.
Ich habe die Software leider vor einiger Zeit deinstalliert (bei einer Massen-Deinstallation verschiedener Programme), daher kann ich keine Links mehr manuell erstellen, aber die Symbole werden immer dann automatisch angezeigt, wenn Windows einen Hard-, Symbolic- oder Junction-Link erkennt.
Ich kann jdupes nur empfehlen . Es ist eine erweiterte Gabelung von fdupes , enthält aber auch:
--linkhard
, oder -L
kurz gesagtFür Ihre Frage können Sie einfach ausführen $ jdupes -L /path/to/your/files
.
Möglicherweise möchten Sie die neueste Quelle von ihrem GitHub-Repo klonen und erstellen, da sich das Projekt noch in der aktiven Entwicklung befindet.
Hier werden auch Windows-Binärdateien bereitgestellt. Gepackte Binärdateien sind in einigen Linux / BSD-Distributionen verfügbar - eigentlich habe ich sie zum ersten Mal gefunden $ apt search
.