Готовясь к созданию сжатых образов нескольких жестких дисков, я ищу программное обеспечение, которое заполнит нулями неиспользуемые части диска (длительные серии нулей сжимаются достаточно хорошо).
Требования:
Хорошо бы иметь:
Вы можете использовать WipeFreeSpace , который работает на Linux. Поддерживает различные файловые системы, включая FAT32 (Win98). Вы должны пройти через процесс ручной сборки, так как нет бинарного...
Или вы можете использовать инструмент hacers THC-SecureDelete .
Для первой попытки я рекомендую вам сначала сделать резервную копию всех данных, поэтому, если вы сделаете это только один раз, заархивируйте данные на другой диск, очистите весь диск и заархивируйте его обратно.
Обновлено: SysInternals SDelete по крайней мере для Windows XP, как упоминал Томас в верхнем комментарии, является только бесплатным решением для Windows.
Я бы предложил загрузиться с USB-ключа Linux, который дает доступ для чтения / записи к диску, который вы хотите обнулить, и использовать скрипт python (большинство установок Linux включают python), чтобы сделать что-то вроде:
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)
Вышеупомянутое на 100% не проверено Используйте на свой страх и риск
Исторически сложилось так, что мое решение сделать так, как вы описали, состояло бы в том, чтобы смонтировать исходную файловую систему и использовать команду dd для создания файла с нулевым заполнением, а затем удалить временный файл:
$ mount /dev/source_hard_drive /mnt
$ cd /mnt
$ dd if=/dev/zero of=some_random_temp_file bs=1M ; rm some_random_temp_file
Рассмотрите возможность использования Partclone вместо обнуления неиспользуемого пространства на вашем диске. Partclone — это бесплатное программное обеспечение, которое поддерживает форматы дисков NTFS, FAT32, EXT2 и EXT3, а также многие другие форматы.
Вместо обнуления неиспользуемого пространства Partclone можно настроить на копирование только используемых блоков, присутствующих на диске . Он может генерировать так называемый файл домена , в котором указывается, какие блоки на диске фактически используются. Это сэкономит ваше время и позволит создать неразрушающую копию исходных данных.
Максимально обнуляет (пустое пространство как нераспределенное, так и внутри выделенного, неиспользуемые записи каталога и т. д.)
ntfswipe
хорошо работал на линуксе. Он может получить все неиспользуемые биты, такие как восстановленная информация и удаленный файл, а не только свободное место.
Поддержка форматов дисков ext2 и ext3.
Для этого вы можете использовать zerofree
.
Томас Веллер
Томас Веллер
Ди
Отметка