BlackJack hat geschrieben:Wenn Du Python 2.4 einsetzt, dann würde ich die Zufallsdaten aus 'os.urandom()' nehmen. Ist vielleicht schneller und zufälliger als der Generator in 'random'.
Jep! os.urandom() ist um einiges schneller... Zumal es ja schon Zufällige Zeichen beliebiger länge liefert:
http://python.org/doc/lib/os-miscfunc.html
Somit kann ich direkt einen Block von z.B. 1KB schreiben lassen.
Neue Test-Version:
Code: Alles auswählen
import os, time
def write1024RandomBytes( FileHandle, Bytes ):
FileHandle.write( os.urandom(Bytes) )
def write1024NullBytes( FileHandle, Bytes ):
FileHandle.write("\x00" * Bytes)
FileHandle = file( "Test.dat" , "w" )
BlockSize = 1024 * 1024 * 10
StartZeit = time.time()
BytesWrited = 0
for i in xrange( 10 ):
BytesWrited += BlockSize
print "schreibe", BytesWrited/1024/1024, "MBytes...",
write1024NullBytes( FileHandle, BlockSize )
#~ write1024RandomBytes( FileHandle, BlockSize )
AktuelleZeit = time.time()
print "OK (%.3f sek.)" % (AktuelleZeit - StartZeit)
Wenn ich 100MB leeren String scheibe, dauert das ca. 7.8Sek Das gleiche mit os.urandom() dauert ca. 9.6Sek... Also nicht sonderlich mehr... Wobei wenn man es auf 160GB hochrechnet
Einzelne Dateien wirst Du nicht sicher löschen können
Wie geschrieben, das soll auch garnicht das Ziel sein... Ehr halt ganze Festplatten... Wenn man z.B. eine verkauft, sollten die ehemals vorhandenen Daten auch wirklich gelöscht sein
Schreib' doch einfach solange, bis eine Ausnahme ausgelöst wird.
Das wäre auch meine Lösunge gewesen, nur so kann man leider keinen prozentualen Fortschritt und auch keine Zeit schätzen lassen
Wenn man wirklich 40, 60, 80, 160GB löschen will, dauert das schon einige Zeit lang
cat /dev/urandom > /dev/hdX
OK, dann hat sich das für Linux schon mal erledigtm danke für den Tipp