En preparación para crear imágenes de disco comprimidas de varios discos duros, estoy buscando un software que rellene con cero las partes no utilizadas del disco (las series largas de ceros se comprimen bastante bien).
Requisitos:
Agradable tener:
Puede usar WipeFreeSpace que se ejecuta en Linux. Admite varios sistemas de archivos, incluido FAT32 (Win98). Tienes que pasar por el proceso de construcción manual, ya que no hay binario...
O puedes usar la herramienta hacers THC-SecureDelete .
Para el primer intento, le recomiendo que haga una copia de seguridad de todos los datos primero, por lo tanto, tar los datos en otro disco y borrar todo el disco y volver a tar es una opción aceptable si lo hace solo una vez.
Actualizado: SysInternals SDelete para al menos Windows XP como Thomas mencionó en el comentario superior es solo una solución gratuita de Windows.
Sugeriría arrancar desde una llave USB de Linux que brinde acceso de lectura/escritura a la unidad que desea poner a cero y usar un script de python (la mayoría de las instalaciones de Linux incluyen python), para hacer algo como:
import os
def DoIt(drive_path):
""" Fill a drive with zeros then delete them """
info = os.statvfs(drive_path) # Get a the file system info. NOT AVAILABLE ON WINDOWS!
zerodir = os.path.join(drive_path, 'ZerosDir') # Create a directory name
os.makedirs(zerodir) # And the directory
filename_pattern = os.path.join(zerodir, 'Z%07d.000') # File name pattern
bsize = max(info.f_bsize, info.f_frsize) # Decide the block size
zeros = "\x00" * bsize # Create a block of zeros that size
try: # We don't wish to abort the whole script on an error
for n in xrange(info.f_files): # For the max number of files allowed
with open(filename_pattern % n, 'wb') as zf: # Open a file
zf.write(zeros) # write the file
zf.flush() # Make sure it is written
os.fsync(zf) # REALLY Sure
except IOError, e:
pass # Carry on to the end of the script even if there is a problem
print 'Finished Creating Files'
for n in xrange(info.f_files): # For the max number of files allowed
try: # Don't wish to abort even if there is a file we can't delete
os.os.remove(filename_pattern % n) # Remove the file
except OSError, e: # In case of problems
print e # Print the problem but carry on
os.rmdir(zerodir)
print 'Done!'
if __name__ == "__main__":
import sys
if len(sys.argv) < 2:
print "Please supply the path(s) to the drive(s) to fill with zeros"
for arg in sys.argv[1:]:
DoIt(arg)
Lo anterior es 100% no probado Úselo bajo su propio riesgo
Históricamente, mi solución para hacer lo que ha descrito sería montar el sistema de archivos de origen y usar el comando dd para crear un archivo de relleno cero y luego eliminar el archivo temporal:
$ mount /dev/source_hard_drive /mnt
$ cd /mnt
$ dd if=/dev/zero of=some_random_temp_file bs=1M ; rm some_random_temp_file
Considere usar Partclone en lugar de reducir a cero el espacio no utilizado en su disco. Partclone es un software gratuito y admite formatos de disco NTFS, FAT32 y EXT2 y EXT3, así como muchos otros formatos.
En lugar de poner a cero el espacio no utilizado, Partclone se puede configurar para copiar solo los bloques usados presentes en el disco . Puede generar lo que se llama un archivo de dominio , que especifica qué bloques en el disco están realmente en uso. Esto le ahorrará tiempo y permitirá una copia no destructiva de sus datos de origen.
Pone a cero tanto como sea posible (espacio vacío tanto no asignado como dentro de las asignaciones, entradas de directorio no utilizadas, etc.)
ntfswipe
funcionó bien en Linux. Puede obtener todos los bits no utilizados, como la información recuperada y el archivo eliminado, no solo el espacio libre.
Soporte para formatos de disco ext2 y ext3.
Para eso puedes usar zerofree
.
Tomás Weller
Tomás Weller
Dee
Marca