Vorwort Manchmal stellen Dateikopien eine enorme Verschwendung von Festplattenspeicher dar und können zu Verwirrung führen, wenn Sie eine Datei aktualisieren möchten. Hier sind sechs Befehle zum Identifizieren dieser Dateien. In einem kürzlich erschienenen Beitrag haben wir uns damit beschäftigt, wie man Dateien identifiziert und lokalisiert, die fest verknüpft sind (d. h. auf denselben Festplatteninhalt verweisen und einen Inode gemeinsam nutzen). In diesem Artikel sehen wir uns Befehle an, die Dateien mit demselben Inhalt finden können, die aber nicht miteinander verknüpft sind. Hardlinks sind nützlich, da sie die Speicherung von Dateien an mehreren Stellen im Dateisystem ermöglichen, ohne zusätzlichen Festplattenspeicher zu beanspruchen. Andererseits können Dateikopien manchmal eine enorme Verschwendung von Festplattenspeicherplatz darstellen und beim Aktualisieren von Dateien zu Unannehmlichkeiten führen. In diesem Artikel sehen wir uns verschiedene Möglichkeiten zum Identifizieren dieser Dateien an. Vergleichen von Dateien mit dem Diff-Befehl Der wahrscheinlich einfachste Weg, zwei Dateien zu vergleichen, ist die Verwendung des Befehls „diff“. Die Ausgabe zeigt die Unterschiede zwischen Ihren Dateien. Die Symbole < und > geben an, ob in der ersten ( < ) oder zweiten ( > ) Datei zusätzliche Textzeilen vorhanden sind, die als Argumente übergeben werden. In diesem Beispiel gibt es zusätzliche Textzeilen in backup.html. $ diff index.html Sicherung.html 2438a2439,2441 > <vor> > Das ist alles, was es zu berichten gibt. > </pre> Wenn diff keine Ausgabe liefert, sind die beiden Dateien identisch. $ diff Startseite.html Index.html $ Der einzige Nachteil von diff ist, dass es nur zwei Dateien gleichzeitig vergleichen kann und Sie die zu vergleichenden Dateien angeben müssen. Einige der Befehle in diesem Beitrag können mehrere doppelte Dateien für Sie finden. Verwenden von Prüfsummen Der Befehl cksum (Prüfsumme) berechnet die Prüfsumme einer Datei. Eine Prüfsumme ist eine mathematische Vereinfachung, die Textinhalte in eine lange Zahl umwandelt (z. B. 2819078353 228029). Obwohl Prüfsummen nicht völlig eindeutig sind, ist die Wahrscheinlichkeit, dass Dateien mit unterschiedlichem Inhalt die gleiche Prüfsumme aufweisen, äußerst gering. $ cksum *.html 2819078353 228029 Backup.html 4073570409 227985 home.html 4073570409 227985 index.html Im obigen Beispiel können Sie sehen, dass davon ausgegangen werden kann, dass die zweite und dritte Datei, die die gleiche Prüfsumme erzeugen, identisch sind. Verwenden des Find-Befehls Obwohl der Befehl „Find“ keine Option zum Suchen nach doppelten Dateien hat, können Sie damit dennoch Dateien nach Name oder Typ suchen und den Befehl „cksum“ ausführen. Zum Beispiel: $ find . -name "*.html" -exec cksum {} \; 4073570409 227985 ./home.html 2819078353 228029 ./backup.html 4073570409 227985 ./index.html Verwenden des Befehls fslint Der Befehl fslint kann gezielt zum Auffinden doppelter Dateien verwendet werden. Beachten Sie, dass wir ihm eine Startposition zugewiesen haben. Wenn eine große Anzahl von Dateien durchlaufen werden muss, kann dies eine Weile dauern. Beachten Sie, wie doppelte Dateien aufgelistet und nach anderen Problemen wie leeren Verzeichnissen und ungültigen IDs gesucht wird. $ fslint . -----------------------------------Dateiname lint -------------------------------Ungültige UTF-8-Namen ----------------------------------- Aktenkoffer-Fussel ----------------------------------DUPlizieren Sie Dateien <== Startseite.html Hauptseite -------------------------------------------------- Hängende Links --------------------überflüssige Zeichen in Links ------------------------------------verdächtige Links --------------------------------Leere Verzeichnisse ./.gnupg ----------------------------------Temporäre Dateien ----------------------Doppelte/widersprüchliche Namen ------------------------------------------Ungültige IDs -------------------------Nicht entfernte ausführbare Dateien Möglicherweise müssen Sie fslint auf Ihrem System installieren. Möglicherweise müssen Sie es auch zu Ihrem Befehlssuchpfad hinzufügen: $ export PATH=$PATH:/usr/share/fslint/fslint Verwenden des Befehls rdfind Der Befehl rdfind sucht auch nach doppelten Dateien (mit gleichem Inhalt). Der Name bedeutet „Duplikatsfinder“ und das Programm kann anhand des Dateidatums ermitteln, welche Datei das Original ist. Dies ist nützlich, wenn Sie Kopien löschen möchten, da dadurch die neuere Datei entfernt wird. $ rdfind ~ Beim Scannen von „/home/shark“ wurden jetzt 12 Dateien gefunden. Jetzt sind es insgesamt 12 Dateien. 1 Datei aufgrund nicht eindeutigen Geräts und Inodes entfernt. Die Gesamtgröße beträgt 699498 Bytes oder 683 KiB 9 Dateien aufgrund unterschiedlicher Größen aus der Liste entfernt. 2 Dateien übrig. Kandidaten werden jetzt auf Basis der ersten Bytes eliminiert: 0 Dateien aus der Liste entfernt. 2 Dateien übrig. Kandidaten werden jetzt auf Grundlage der letzten Bytes eliminiert: 0 Dateien aus der Liste entfernt. 2 Dateien übrig. Jetzt werden Kandidaten basierend auf der SHA1-Prüfsumme eliminiert: 0 Dateien aus der Liste entfernt. 2 Dateien übrig. Es scheint, als hätten Sie 2 Dateien, die nicht eindeutig sind Insgesamt können 223 KiB eingespart werden. Jetzt wird die Ergebnisdatei results.txt erstellt Sie können diesen Befehl im Probelaufmodus ausführen (mit anderen Worten, nur Änderungen melden, die andernfalls vorgenommen werden könnten). $ rdfind -dryrun true ~ (DRYRUN-MODUS) Beim Scannen von „/home/shark“ wurden derzeit 12 Dateien gefunden. (DRYRUN-MODUS) Jetzt gibt es insgesamt 12 Dateien. (DRYRUN-MODUS) 1 Datei aufgrund nicht eindeutigen Geräts und Inodes entfernt. (DRYRUN MODE) Die Gesamtgröße beträgt 699352 Bytes oder 683 KiB 9 Dateien aufgrund unterschiedlicher Größen aus der Liste entfernt. 2 Dateien übrig. (DRYRUN-MODUS) Kandidaten werden jetzt basierend auf den ersten Bytes eliminiert: 0 Dateien aus der Liste entfernt. 2 Dateien übrig. (DRYRUN-MODUS) Kandidaten werden jetzt auf Grundlage der letzten Bytes eliminiert: 0 Dateien aus der Liste entfernt. 2 Dateien übrig. (DRYRUN-MODUS) Kandidaten werden jetzt basierend auf der SHA1-Prüfsumme eliminiert: 0 Dateien aus der Liste entfernt. 2 Dateien übrig. (DRYRUN-MODUS) Es scheint, als hätten Sie 2 Dateien, die nicht eindeutig sind (DRYRUN-MODUS) Insgesamt können 223 KiB reduziert werden. (DRYRUN-MODUS) Jetzt wird die Ergebnisdatei results.txt erstellt Der Befehl rdfind bietet auch Funktionen wie das Ignorieren leerer Dateien (-ignoreempty) und das Folgen symbolischer Links (-followsymlinks). Eine Erklärung finden Sie auf der Manpage. -ignoreempty leere Dateien ignorieren -minsize ignoriert Dateien, die kleiner als die angegebene Größe sind -followsymlinks symbolischen Links folgen -removeidentinode entfernt Dateien, die auf identische Inodes verweisen -checksum identifiziert den zu verwendenden Prüfsummentyp -deterministic bestimmt, wie Dateien sortiert werden -makesymlinks wandelt doppelte Dateien in symbolische Links um -makehardlinks ersetzt doppelte Dateien durch Hardlinks -makeresultsfile erstellt eine Ergebnisdatei im aktuellen Verzeichnis -outputname: Name für die Ergebnisdatei angeben -deleteduplicates löscht/löst die Verknüpfung doppelter Dateien -sleep Ruhezeit zwischen dem Lesen von Dateien festlegen (Millisekunden) -n, -dryrun zeigt an, was getan worden wäre, führt es aber nicht aus Beachten Sie, dass der Befehl rdfind die Option -deleteduplicates true zum Löschen von Duplikaten bereitstellt. Hoffentlich stört Sie diese kleine Spitzfindigkeit in der Befehlssyntax nicht. ;-) $ rdfind -deleteduplicates true . ... 1 Datei gelöscht. <== Wahrscheinlich müssen Sie den Befehl rdfind auf Ihrem System installieren. Es ist möglicherweise eine gute Idee, damit zu experimentieren, um sich mit der Verwendung vertraut zu machen. Verwenden des Befehls fdupes Der Befehl fdupes erleichtert außerdem die Identifizierung doppelter Dateien. Es bietet außerdem eine Reihe nützlicher Optionen – beispielsweise -r für die Iteration. In diesem Beispiel werden doppelte Dateien folgendermaßen gruppiert: $ fdupes ~ /home/shs/UPGRADE /home/shs/meinwin /home/shs/lp.txt /home/shs/lp.man /home/shs/penguin.png /home/shs/penguin0.png /home/shs/hideme.png Dies ist ein Beispiel für die Verwendung von Iteration. Beachten Sie, dass viele der doppelten Dateien wichtig sind (die .bashrc- und .profile-Dateien des Benutzers) und nicht gelöscht werden sollten. # fdupes -r /home /home/hai/home.html /home/hai/index.html /home/dory/.bashrc /home/eel/.bashrc /home/nemo/.profile /home/dory/.profile /home/shark/.profile /home/nemo/tryme /home/shs/tryme /home/shs/Pfeil.png /home/shs/PNGs/Pfeil.png /home/shs/11/files_11.zip /home/shs/ERIC/file_11.zip /home/shs/penguin0.jpg /home/shs/PNGs/penguin.jpg /home/shs/PNGs/penguin0.jpg /home/shs/Sandra_rotated.png /home/shs/PNGs/Sandra_rotated.png Der Befehl fdupe hat viele unten aufgeführte Optionen. Verwenden Sie den Befehl fdupes -h oder lesen Sie die Manpage für weitere Einzelheiten. -r --recurse rekursiv -R --recurse: rekursiv durch angegebene Verzeichnisse -s --symlinks folgt symbolisch verknüpften Verzeichnissen -H --hardlinks behandelt Hardlinks als Duplikate -n --noempty leere Dateien ignorieren -f --omitfirst lässt die erste Datei in jedem Satz von Übereinstimmungen aus -A --nohidden versteckte Dateien ignorieren -1 --sameline Liste der Übereinstimmungen in einer einzelnen Zeile -S --size zeigt die Größe doppelter Dateien an -m --summarize fasst Informationen zu doppelten Dateien zusammen -q --quiet Fortschrittsanzeige ausblenden -d --delete fordert den Benutzer zur Eingabe der zu speichernden Dateien auf -N --noprompt: Bei Verwendung mit --delete bleibt die erste Datei im Set erhalten. -I --immediate löscht Duplikate, sobald sie gefunden werden -p --permissions unterscheidet keine Dateien mit unterschiedlichem Besitzer/Gruppe oder Berechtigungsbits als Duplikate -o --order=WORD sortiert Dateien gemäß Spezifikation -i --reverse Reihenfolge beim Sortieren umkehren -v --version zeigt die Version der Fdupes an -h --help zeigt die Hilfe an Auch den Befehl fdupes müssen Sie möglicherweise installieren und eine Zeit lang verwenden, bevor Sie mit seinen zahlreichen Optionen vertraut sind. Zusammenfassen Linux-Systeme bieten eine Vielzahl von Tools zum Auffinden und (ggf.) Entfernen doppelter Dateien. Darüber hinaus verfügen sie über Optionen, mit denen Sie angeben können, wo gesucht werden soll und was mit den gefundenen Duplikaten geschehen soll. Das ist alles für diesen Artikel. Ich hoffe, dass der Inhalt dieses Artikels für Ihr Studium oder Ihre Arbeit von gewissem Referenzwert ist. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. über: https://www.networkworld.com/article/3390204/how-to-identify-same-content-files-on-linux.html#tk.rss_all Autor: Sandra Henry-Stocker Thema: lujun9972 Übersetzer: tomjlw Korrekturleser: wxy Das könnte Sie auch interessieren:
|
<<: Implementierung der CommonJS-Modularität in Browsern ohne Kompilierung/Server
>>: Zusammenfassung der Linux-Befehlsmethoden zum Anzeigen verwendeter Befehle
Was ist Textumbruch um Bilder? Dies ist die Auswi...
Inhaltsverzeichnis Warum setState verwenden? Verw...
Als ich kürzlich an CSS-Schnittstellen arbeitete,...
1. Vermeiden Sie es, die Seite als XML-Typ zu dek...
Verwenden Sie immer noch das flexible Rem-Layout?...
Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...
Bei jüngsten Produkttests wurde das Problem festg...
1. Laden Sie die erforderliche Kernel-Version her...
MySQL ist eine relativ einfach zu verwendende rel...
In diesem Artikel wird der spezifische Code von r...
Frage: <input type="hidden" name=&qu...
1. Einführung in Flex Layout Flex ist die Abkürzu...
Vorwort Wenn die Abfrageinformationen aus mehrere...
Kürzlich bin ich auf die Anforderung gestoßen, Te...
Hier kommt CentOS7 zum Einsatz und die Kernel-Ver...