Bildsequenzen "defragmentiert" kopieren?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

Freitag 20. Juni 2008, 11:07

egal ob mit oder ohne dem DELETE-Teil, bekomme ich folgenden gleichlautenden Traceback:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag.py", line 211, in <module>
main()
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag.py", line 186, in main
cluster_size = get_cluster_size(volume)
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag.py", line 153, in get_cluster_size
return get_disk_size(volume)/defrag.get_volume_map(volume)[1]
File "C:\Dokumente und Einstellungen\Administrator\Desktop\defrag\defrag_api.py", line 186, in get_volume_map
raise VolumeMapException(error, errors[get_last_error()])
defrag_api.VolumeMapException: (234L, 'ERROR_MORE_DATA')
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 20. Juni 2008, 11:56

Hi

Ist das eine grosse Partition mit kleinen Clustern?

ERROR_MORE_DATA heisst dass der Buffer den ich übergebe nicht ausreicht, sprich deine Partition besteht aus mehr als 64Millionen Clustern.

Da sollte es reichen bei der Funktion get_volume_map den Buffer zu vergrössern:

Code: Alles auswählen

out_buffer = ctypes.c_buffer('\x00',64*1024*1024)
Einfach eine grössere Zahl nehmen, z.B. 128*1024*1024 ergibt daraus aber auch einen Ram-Verbrauch von 128MB.

Kling auf jeden Fall so, also könnte es nacher funktionieren.

Gruss
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

Freitag 20. Juni 2008, 12:05

Danke, werd ich gleich probieren. Das Volume ist halbwegs gross, hat gut 5TB. Wie man das in "Cluster" umrechnet, keine Ahnung :)

Ist denn "Cluster" das gleiche was man so als "Block" bezeichnet?
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 20. Juni 2008, 12:16

Also die Clustergrösse ist abhängig von der Grösse der Partition und dem was man Einstellt beim Formatieren.

Wenn ein Cluster z.B. 4kB gross ist, belegt jede Datei mindestens soviel, ist eine Datei kleiner ist der restliche Speicherplatz verloren. Ein Cluster ist also die kleinste Einheit die belegt werden kann.

Bei 5TB gibts natürlich eine Menge Cluster, ich hab hier ein Raid von 500GB :).

Block hab ich im Quelltext zusammenstehende Cluster die belegt oder frei sind genannt.

Gruss
shakebox
User
Beiträge: 175
Registriert: Montag 31. März 2008, 17:01

Freitag 20. Juni 2008, 12:28

ok, kaum setzt man die Groesse richtig, schon funktioniert es :)

Bei der Groesse dauert die Suche nach nem passenden Block natuerlich ne Weile, aber das ist glaube ich gut verschmerzbar.

Danke Dir nochmal ganz, ganz herzlich. Sag Bescheid, wie ich mich evtl. erkenntlich zeigen kann. Wenn Du magst kannst Du mir gerne ne Adresse zukommen lassen, dann schick ich ne Flasche Wein oder sonst etwas womit man Dir ne Freude machen kann, auf den Weg.

Eine kleine Frage noch:
Die Aenderungen, die wir jetzt zu Testzwecken eingebaut haben, welche davon soll ich drin lassen und welche sinnvollerweise wieder rausnehmen? Was also hing jetzt alles an der zu kleinen Buffersize und was war wirklich sonst noch "falsch". Also ich mein die Sachen mit der FILE_SHARE_READ und mit dem 0xffffffff: usw.
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Freitag 20. Juni 2008, 12:34

Hi

Also kannst du alle Änderungen drin lassen.
0xffffffff ist die korrekte Überprüfung ob das Handle gültig ist.
FILE_SHARE_READ brauchts noch zusätzlich damit das Volume geöffnet werden kann.
Grösserer Buffer brauchts für deine Partitionsgrösse.

Entschädigung ist nicht nötig :)

Gruss
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 2. Juli 2008, 07:36

Gerade das hier gesehen: http://wiki.ubuntuusers.de/FATSort

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
BlackJack

Mittwoch 2. Juli 2008, 08:39

Das sortiert "physikalisch" die Namen im Inhaltsverzeichnis. Die Dateien selbst werden nicht angefasst, also auch nicht umsortiert und defragmentiert. Ist also für den OP ungeeignet.
Antworten