Autor |
Beitrag |
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Di 10.02.09 01:15
Hallo
Hab mal ein Tool zusammengeklöppelt, dass doppelt oder mehrfach vorhandene Dateien sucht und auflistet. Es sucht auf allen oder nur auf einem ausgewählten Laufwerk entweder alle oder nur bestimmte Dateitypen und identifiziert Doubletten ausschließlich über einen MD5-Check. Die Festlegung der Start-Attribute erlauben viele verschiedene Suchläufe und Auswertungen. Eine Kurzanleitung ist im Programm enthalten. Nachdem es nun endlich "fehlerfrei" läuft, kann ich nur sagen. Es ist unglaublich, was sich auf ca. 3 TB an Speicher fressenden Müll ansammelt. Aber: Eine Löschfunktion ist noch nicht eingebaut. Einfach deshalb, weil nicht jede doppelt vorhandene Datei auch gleichzeitig Müll ist. Im Moment noch kann man mit Ergebnisdateien unter ..\Dokumente und Einstellungen\User\Anwendungsdaten\Gemini (oder der englischen Entsprechung) händisch oder per Batch löschen. Aber genau so, wie mit Doppelclick auf eine Zeile die entsprechende Application gestartet werden kann zum Anschauen von beispielsweise JPG- oder BMP-Dateien, kann ich mir hier auch eine gezielte Löschfunktion vorstellen. Vielleicht gibt es da ja von Euch Vorschläge.
Wär schön, wenn ihr es mal antesten könntet.
Gruß Delphi10
Edit: Wieso merkt man einen Bug erst 20min nach dem UpLoad?
Edit: 26.02.09 Ein Bug hat sich noch herausgestellt: Solange Gemini läuft ist das ClipBoard gesperrt. Ich hatte damit herumexperimentiert und leider sind noch Reste mit compiliert worden. Wird aber beim nächsten UpLoad behoben - falls sich überhaupt jemand dafür interessiert...
Edit: Neue Version eingefügt. 01.03.2009
Edit: V1.0.3.7 eingefügt
Edit: V1.0.4.7 eingefügt
Edit: Sorry, war noch ein Bug drin. Nicht tragisch aber ich konnte ihn auch nicht drinlassen
Edit: ScreenShot drangehängt. Wenn Gemini nicht läuft, kann man wenigsten sehen, wie es aussehen müßte
Edit: V1.0.5.7 Jetzt getestet unter Vista, XP und W2000.
Edit: 07.04.2009 08:00 Und noch ein Bug gefixt, es ist zum
Edit: V1.0.7.7 Hatte über Ostern Zeit und bin noch mal systematisch alles durchgegangen. Es ist unglaublich, mit welcher Heimtücke man sich selber abschiesst....
Zuletzt bearbeitet von delphi10 am Sa 12.09.09 00:32, insgesamt 19-mal bearbeitet
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 10.02.09 14:59
Ein paar Hinweise zur Verbesserung:
1. Sowohl MD5- als auch SHA1-Check heranziehen, ggf. GEgenprüfung, ob die Dateien wirklich gleich sind.
2. Vergleich auch auf Remote-Rechnern (Dafür such ich nämlich noch ein Tool)
3. Suchstatus abspeicherbar, um die Wiederaufnahme zu beschleunigen
4. Auch vergleich von Einzelordnern zulassen; manchmal weiß man ja ungefähr schon, wo die Duplikate liegen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Di 10.02.09 15:48
BenBE hat folgendes geschrieben : | Ein paar Hinweise zur Verbesserung:
1. Sowohl MD5- als auch SHA1-Check heranziehen, ggf. GEgenprüfung, ob die Dateien wirklich gleich sind. |
Dann wirds aber nicht schneller, ne?
Zitat: | 2. Vergleich auch auf Remote-Rechnern (Dafür such ich nämlich noch ein Tool) |
Hmm, hab zwar Rechner im LAN aber keine echten Remote. Muss mal sehen.
Zitat: | 3. Suchstatus abspeicherbar, um die Wiederaufnahme zu beschleunigen
4. Auch vergleich von Einzelordnern zulassen; manchmal weiß man ja ungefähr schon, wo die Duplikate liegen ... |
Eigentlich wollte ich unbedingt irgendwelche Zusatzdateien oder INI's vermeiden, schreib ichs in die Registry-ok?
_________________ Salus populi suprema lex esto
|
|
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Di 10.02.09 15:53
delphi10 hat folgendes geschrieben : |
Eigentlich wollte ich unbedingt irgendwelche Zusatzdateien oder INI's vermeiden, schreib ichs in die Registry-ok? |
Dafür ist die Registry da...
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 10.02.09 17:13
Naja, wirklich Remote hab ich auch eher selten; aber TCP dazu zu nutzen, die Hashes zu synchronisieren deckt diesen Fall auch gleich ab ...
Zu dem Thema MD5: Brauchst ja ggf. nur für die Dateien mit doppeltem MD5-Hash die SHA1-Summe auch mit zu berechnen; dass es durch diese zusätzliche Berechnung nicht schneller wird, ist klar 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Di 10.02.09 21:05
_________________ Salus populi suprema lex esto
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 12.02.09 21:24
delphi10 hat folgendes geschrieben : | Eigentlich wollte ich unbedingt irgendwelche Zusatzdateien oder INI's vermeiden, schreib ichs in die Registry-ok? |
Was willst du in die Registry schreiben? Eine komplette Liste aller Dateinamen inklusive MD5-Checksummen? Das wäre ja größer als die gesamte aktuelle Registry
Außerdem erstellst du doch ohnehin schon einen Ordner in den Anwendungsdaten - warum nicht dort reinspeichern?
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Do 12.02.09 21:58
Yogu hat folgendes geschrieben : | delphi10 hat folgendes geschrieben : | Eigentlich wollte ich unbedingt irgendwelche Zusatzdateien oder INI's vermeiden, schreib ichs in die Registry-ok? |
Was willst du in die Registry schreiben? Eine komplette Liste aller Dateinamen inklusive MD5-Checksummen? Das wäre ja größer als die gesamte aktuelle Registry
|
Hast Du das Programm mal gestartet? Vor einem Suchlauf muss man einige Startparameter auswählen. Diese und ein/zwei Programmstati werden immer aktualisiert in die Registry geschrieben, damit der nächste Programmstart sofort ausgeführt werden kann. Sorry, aber so wie Du schreibst, hast Du den Thread nicht verfolgt. Lies doch mal die Antwort von BenBE
Die nächste Version ist fast fertig. Unter anderem:
- Startparameter in der Registry
- SHA1 zusätzlich
- Suchen in den Ergebnisfenstern
- Vergleich in definierten Trees
_________________ Salus populi suprema lex esto
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 13.02.09 17:39
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Fr 13.02.09 20:28
Yogu hat folgendes geschrieben : | Also willst du nur den Namen der zuletzt indizierten Datei speichern? Aber irgendwo müssen doch die ganzen früheren MD5s hin, oder entnimmst du die der Logdatei in den Anwendungsdaten? Dann kannst du doch gleich dort auch die Konfigurationsdatei speichern, damit der User nachher nicht an zwei verschiedenen Ordnern den Datenmüll entfernen muss.  |
Leider immer noch nicht so richtig. Unter Anwendungsdaten werden lediglich zwei Dateien angelegt:
- Eine Datei enthält alle gefundenen Dateinamen incl. der MD5-Hashes.
- Die zweite Datei enthält alle mehrfach vorhandenen Dateinamen incl. der MD5-Hash.
Im Prinzip sind das nur User-Infodateien, sie werden von Gemini nicht mehr angefasst aber gegebenenfalls überschrieben.
Sonst werden keine weiteren Dateien angelegt. Alle weiter benötigte Startparameter wie:
- Anzeige EIN/AUS
- Alle Laufwerke
- Einzelnes Laufwerk
- Gesuchte Dateiextension
- Letzter Suchbegriff aus der Suche in den Ergebnissen(V.0.7)
werden beim allerersten Programmstart vorbelegt- und bei jedem Programmende aktualisiert in die Registry geschrieben. Somit erleichtern sie jeden weiteren Programmstart, indem sie beim Start gelesen und in die entsprechenden Felder eingesetzt werden. Die unter Anwendungsdaten erzeugten Dateien werden dazu nicht gebraucht. Die nächste Version wird eine Checkbox enthalten mit der man auswählen kann, ob nach dem nächsten Programmende alle erzeugten Daten gelöscht werden sollen. Quasi eine UnInstall-Funktion.
Jetzt müsste eigentlich klar sein, was wo gespeichert wird. TIPP: Einfach mal ausprobieren.
_________________ Salus populi suprema lex esto
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 13.02.09 21:06
-Weniger geblinke
-Auswahl von 2 oder mehr Verzeichnissen, die Verglichen werden sollen (ähnlich der Suchpfad-Dialoge von Delphi)
-Für einen Speicherort entscheiden. Pack einfach alles ins Application Data, und frag den User beim Beenden ob er das behalten will oder obs weg kann.
Zur Funktion kann ich nix sagen, da das mangels Verzeichnisauswahl nicht Testbar ist für mich.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 13.02.09 21:32
Hm, ich verstehe immer noch nicht so ganz, wie du dann die Suche fortsetzen willst. Dafür müsstest du doch die bisherigen Ergebnisse speichern - es kann ja sein, dass eine später untersuchte Datei mit einer Datei, die vor der Pausierung analysiert wurde, übereinstimmt. Die einzige Möglichkeit, das zu prüfen, ist das Speichern aller Checksummen. Oder ich stehe gerade vollständig auf dem Schlauch...
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Fr 13.02.09 23:19
|
|
Garf
      
Beiträge: 54
Erhaltene Danke: 2
D3Prof, D7PE, TDE
|
Verfasst: Sa 14.02.09 10:38
delphi10 hat folgendes geschrieben : | Vielleicht gibt es da ja von Euch Vorschläge. |
Wenn die Dateien auf der selben NTFS-Partition liegen, wäre eine Alternative zum Löschen das Anlegen von Hardlinks.
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Sa 14.02.09 14:32
Yogu hat folgendes geschrieben : | Die einzige Möglichkeit, das zu prüfen, ist das Speichern aller Checksummen. Oder ich stehe gerade vollständig auf dem Schlauch... |
Alle ermittelten Checksummen und Pfade stehen bis zum Programmende in
a: ListBox
b: Memo
c: RichEdit
Zutreffendes bitte ankreuzen.
Und ja, es passen mehr als 64KB hinein.
--- Moderiert von Narses: Beiträge zusammengefasst---
Martok hat folgendes geschrieben : | -Auswahl von 2 oder mehr Verzeichnissen, die Verglichen werden sollen (ähnlich der Suchpfad-Dialoge von Delphi) |
Ist in nächsten Version schon drin.
Zitat: | -Für einen Speicherort entscheiden. Pack einfach alles ins Application Data, und frag den User beim Beenden ob er das behalten will oder obs weg kann. |
Überleg ich mal. Obwohl das ganze INI-Geraffel gefällt mir nicht. Halte ich nicht für besonders elegant. Alles Löschen auf Knopfdruck ist auch schon in 1.0.0.7 drin. Aber von unterschiedlichen Speicherorten.
Zitat: | Zur Funktion kann ich nix sagen, da das mangels Verzeichnisauswahl nicht Testbar ist für mich. |
Das verstehe ich jetzt nicht. Welches Verzeichnis fehlt, das App.Data?
--- Moderiert von Narses: Beiträge zusammengefasst---
Garf hat folgendes geschrieben : | delphi10 hat folgendes geschrieben : | Vielleicht gibt es da ja von Euch Vorschläge. |
Wenn die Dateien auf der selben NTFS-Partition liegen, wäre eine Alternative zum Löschen das Anlegen von Hardlinks. |
Ne, leider nicht unbedingt. Es kann global über alle Laufwerke suchen und vergleichen.
_________________ Salus populi suprema lex esto
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 14.02.09 16:21
delphi10 hat folgendes geschrieben : | Alle ermittelten Checksummen und Pfade stehen bis zum Programmende{...} |
Eben.
Martok hat folgendes geschrieben : | Zitat: | Zur Funktion kann ich nix sagen, da das mangels Verzeichnisauswahl nicht Testbar ist für mich. |
Das verstehe ich jetzt nicht. Welches Verzeichnis fehlt, das App.Data? |
Verzeichnisauswahl. Wenn du schon gerne frech wirst, darf ich das auch:
1. Lesen
2. Denken
3. Schreiben
Was davon hast du nicht gemacht?
Und nochmal zum Thema: Ganzes Laufwerk vergleichen nutzt mir nix. Ohne eine Möglichkeit, die Verzeichnisse auszuwählen (die es ja in der ominösen schon 1.0.0.7 gibt) kann ich nicht testen. Mehr nicht.
delphi10 hat folgendes geschrieben : | Ne, leider nicht unbedingt. Es kann global über alle Laufwerke suchen und vergleichen. |
s.o.: das war nicht die Frage.
Er meint, dass du die Dateien dann nicht löschen sollst, sondern ggf. per Hardlink verbinden.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Garf
      
Beiträge: 54
Erhaltene Danke: 2
D3Prof, D7PE, TDE
|
Verfasst: Sa 14.02.09 17:39
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Sa 14.02.09 18:21
Garf hat folgendes geschrieben : | In dem Zusammenhang sollte man auch prüfen, ob die Dateien schon hardlinked sind. Nicht dass dann nur ein Link gelöscht wird und der Speicherplatzgewinn bei Null liegt. |
Ja klar, aber ich habe noch keine Löschfunktion geplant oder eingebaut. Und wenn, wird es nur mit Userbeteiligung/Zustimmung gehen plus Anzeige der Kapazitätsbilanz(<- Dein Stichwort "Speicherplatzgewinn" hat mich drauf gebracht. Gute Idee.)
_________________ Salus populi suprema lex esto
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Sa 14.02.09 18:28
Martok hat folgendes geschrieben : | Verzeichnisauswahl. Wenn du schon gerne frech wirst, darf ich das auch: |
Schön, ich werd meinem Avatar immer ähnlicher. Allerdings liegen meine Grenzwerte für Sarkasmus und bitterer Ironie noch zu niedrig. Aber alles andere passt schon.
_________________ Salus populi suprema lex esto
|
|
delphi10 
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Di 24.02.09 21:33
Hallo
Habe oben die neue Version hochgeladen. Unter anderem:
* Startparameter aus der Registry verfügbar
* Erweiterte Konfigurationsmöglichkeiten
* Es kann in den Ergebnissen different gesucht werden.
* Wahlweise zusätzlicher SHA1 256bit Check.
* Verzeichnisse zum Vergleich auswählbar
* Aufräumfunktion -wahlweise- bei Programmende.
Nur mit den Remote-Dateien hapert es noch. Ich hab dafür noch kein überzeugendes Konzept.
Wär nett, wenn es jemand testen könnte. Ein Bug ist immer noch drin
Gruß Delphi10
_________________ Salus populi suprema lex esto
|
|
|