Kann man AllDups internen Suchvorgang manipulieren ?

Deutscher Support für die Software AllDup
Post Reply
goldkante
Posts: 185
Joined: 28 May 2017, 17:00

Kann man AllDups internen Suchvorgang manipulieren ?

Post by goldkante »

Hallo und einen schönen guten Abend,

Ich interessiere mich heute für eine oder gerne auch mehrere Möglichkeiten, um in AllDup eine Suche innerhalb der immerselben Ordner (C:\alle_meine_bildchen\*.*) irgendwie "zufälliger" und nicht so stringent verlaufen zu lassen.

Hintergrund:
30 Tonnen lose Dateien sollen auf 10 Tonnen verdichtet werden.
Der Vorgang an sich bräuchte ca. 1 Jahr durchgehendes Rechnen von AllDup, doch der/die Rechner werden noch für andere Dinge benötigt, so das AllDup nicht durchgehend rechnen kann und unterbrochen werden muss. Zudem soll ein Windows-System alle 2 Wochen neu gestartet werden :-)

Da man eine abgebrochene Suche nicht wieder aufnehmen kann, bleibt dem User nichts anderes übrig, als die erneute Suche nun wieder von vorn zu beginnen. Schon durchgeführte Vergleiche aus vorherigen Suchen werden weder gespeichert, noch berücksichtigt. (Hiermit meine ich nicht ein gespeichertes Suchergebnis, sondern eher eine Art Snapshot, die den letzten Stand(ort der Suche) wiederherstellen kann.)

Mein Szenario sieht desmeist so aus:

C:\alle_meine_dateien\*.*
C:\alle_meine_dateien\uverz1\*.*
C:\alle_meine_dateien\uverz2\*.*
C:\alle_meine_dateien\uverz3\\uverz1\*.*
C:\alle_meine_dateien\uverz3\\uverz2\*.*
C:\alle_meine_dateien\uverz3\\uverz2\uverz1\*.*
[...]

Ich starte eine Suche, breche sie nach einigen Tagen ab und kümmere mich um das Suchergebnis.
Wenn ich genügend Dubletten entsorgt und/oder das Suchergebnis abgearbeitet habe,
starte ich die Suche erneut (identische Such-Optionen, identische Pfade, etc) und alles beginnt von vorn (Abbruch der Suche, Entsorgung der Dubletten).

Ich vermute, aufgrund meiner Beobachtungen, 100% sicher bin ich mir allerdings nicht,
dass AllDup jedes Mal dumpf alle (Unter)Ordner in der gleiche Reihenfolge abarbeitet. (Ausser ein paar gelöschte Dubletten hat sich ja m.W. nichts geändert.)

Ergo, werden immer wieder dieselben schon x-Mal geprüften Dateien miteinander verglichen, bis AllDup auf "neue" Dateien stößt.
Sei es, weil ich viele Dubletten gelöscht habe und AllDup nun schneller bei neuen/bisher ungeprüften Dateien ankommt, oder weil AllDup nun noch länger Zeit zur Suche hatte.

So richtig weiter komme ich jedenfalls nicht mit dieser Methode, denn jedesmal Tagelang zu warten um dann erneut die selben Dateien im Suchergebnis vorzufinden (z.B. falsch positive oder Dateien, die gewollte doppelte sind, oder Dateien, die nicht gelöscht werden dürfen, etc.) ist eher müßig denn effizient.

Nun die Frage an alle:

Welche Möglichkeiten gibt es wohl, AllDup dazu zu bringen, die zu überprüfenden Ordner/Dateien eher "zufällig" oder nach einem anderen Prinzip zu durchforsten? (Wichtig dabei: OHNE meine bestehende Ordner- und Datei-Struktur zu verändern)

Ich dachte z.B. daran, Symbolische Links zu erstellen und die Zielpfade entsprechend zu ändern, doch das artet in Arbeit aus, die eigentlich der Computer erledigen sollte. Möglich wäre es jedenfalls, dass ein Symlink einmal auf uverz1 und beim nächsten Mal auf uverz2 verweist, so das AllDup diesmal mit uverz2 beginnt.
Ich weiss jedoch nichts über eine mögliche interne Vorsortierung von AllDup, so das dies auch vergeudete Liebesmüh sein könnte.

Ich bin für anregende Kritik und kreative Vorschläge immer zu begeistern. :-D

Kurz:
Ich möchte, dass AllDup bei einer neu gestarteten Suche alle zu durchforstenden Ordner in einer jeweils anderen Reihenfolge abarbeitet, so das ich auch mal Dubletten finde, die ich nicht schon zu Gesicht bekommen habe.

Hierzu suche ich kreative Ansätze (in- oder ausserhalb von AllDup)
und hoffe sehr, ich konnte mein Anliegen verständlich nahebringen.
Administrator
Site Admin
Posts: 4047
Joined: 04 Oct 2004, 18:38
Location: Thailand
Contact:

Re: Kann man AllDups internen Suchvorgang manipulieren ?

Post by Administrator »

Ich habe leider keinen Lösungsansatz für dieses Problem, wollte aber dazu beitragen wie AllDup hierbei intern arbeitet.

AllDup verwendet die Windows API-Funktionen FindFirstFile und FindNextFile um vorhandene Dateien zu ermitteln.

Hier eine Info von Microsoft in welcher Reihenfolge diese API-Funktionen Dateien ermitteln:
The order in which the search returns the files, such as alphabetical order, is not guaranteed, and is dependent on the file system. The order in which this function returns the file names is dependent on the file system type. With the NTFS file system and CDFS file systems, the names are usually returned in alphabetical order. With FAT file systems, the names are usually returned in the order the files were written to the disk, which may or may not be in alphabetical order. However, as stated previously, these behaviors are not guaranteed.
goldkante
Posts: 185
Joined: 28 May 2017, 17:00

Re: Kann man AllDups internen Suchvorgang manipulieren ?

Post by goldkante »

Vielen Dank,

wie so meist, werfen ausführliche Anworten weitere Fragen auf:

Ich reime mir also folgendes zusammen:
AllDup erstellt eine abzuarbeitende Liste von Dateien, mit den beiden API-Funktionen. Auf moderneren Systemen wird also wahrscheinlich eine mehr oder weniger alphabetische Liste erstellt.

Offen bleibt hier jedoch noch:
ist die Liste nun für jedes einzelne Verzeichnis unterhalb des Quellordners nun einigermaßen alphabetisch, oder insgesamt für alle im Quellordner enthaltenen Verzeichnisse ? Und wie sieht es bei mehreren Quellordnern aus?

Hypothese:
Wenn AllDup die von der API gelieferten Dateien nicht weiter manipuliert (Z.B. Datei- und Ordnerfilter anwenden, nachträgliches sortieren, etc?) dann sollte es mittels der Symlinks ja möglich sein, die Reihenfolge der Abarbeitung "von außen" zu manipulieren.

Denkbar, natürlich mit programmieraufwand, wäre auch ein "einfaches" $RANDOM(Liste) um die Liste durchzuwürfeln,
hier ist allerdings nicht klar, ob dies wünschenswert und/oder ausschliesslich positve Auswirkungen hätte, da -in vielen Fällen, so vermute ich- die meisten Doppelten Dateien sich im selben oder nah beianderliegenden Verzeichnissen befinden und Datei.exe, Datei (1).exe, Datei (2).exe heissen, so das diese jedenfalls relativ schnell gefunden wären, bei der herkömmlichen Liste.

Nun denn,
mit einem kurzen Testdurchlauf, der zu 100% durchläuft, werde ich -bezüglich der Umstellung der Verzeichnisse durch Symlinks- keinen Unterschied bemerken können
und für einen ausführlichen Test, den ich nach 3 Tagen abbreche, um das Suchergebnis genauer zu analysieren, fehlt mir die Zeit (und Muße), so das ich das Thema erst einmal weiter offen für kreative Inspirationen lasse :-)
Administrator
Site Admin
Posts: 4047
Joined: 04 Oct 2004, 18:38
Location: Thailand
Contact:

Re: Kann man AllDups internen Suchvorgang manipulieren ?

Post by Administrator »

goldkante wrote: 28 Apr 2020, 06:20 Ich reime mir also folgendes zusammen:
AllDup erstellt eine abzuarbeitende Liste von Dateien, mit den beiden API-Funktionen. Auf moderneren Systemen wird also wahrscheinlich eine mehr oder weniger alphabetische Liste erstellt.
AllDup erstellt keine abzuarbeitende Liste, sondern vergleicht die Dateien direkt wenn Sie gefundenen werden.
Würde AllDup zuerst eine Liste von allen Dateien erstellen und diese dann abarbeiten/vergleichen, dann könnte man diese beliebig sortieren.
...und die Antwort auf die nächste Frage wäre dann: Nein, dies kann nicht einfach so umgestellt werden...
Post Reply