URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 3872
[ Назад ]

Исходное сообщение
"как заполнить существующий файл нулями?"

Отправлено Сергей , 16-Авг-12 14:06 
есть файл file.avi 10GB
надо заполнить место, занимаемое им, нулями.
единственное, что приходит в голову, использовать dd с чтением из /dev/zero и записью в этот файл. но можно ли быть уверенным, что писать будет в те же сектора на жестком диске или файл сократится до 0 байт и, когда пойдет запись в него, будет сделано новое выделение места?

буду благодарен за любую идею

спасибо :)


Содержание

Сообщения в этом обсуждении
"как заполнить существующий файл нулями?"
Отправлено wiseman , 16-Авг-12 14:15 
> есть файл file.avi 10GB
> надо заполнить место, занимаемое им, нулями.
> единственное, что приходит в голову, использовать dd с чтением из /dev/zero и
> записью в этот файл. но можно ли быть уверенным, что писать
> будет в те же сектора на жестком диске или файл сократится
> до 0 байт и, когда пойдет запись в него, будет сделано
> новое выделение места?

Нельзя быть уверенным
> буду благодарен за любую идею

rm -P, а потом dd
> спасибо :)


"как заполнить существующий файл нулями?"
Отправлено Сергей , 21-Авг-12 10:22 
> rm -P, а потом dd

мне бы только заполнить файл нулями, удалять нельзя. а если пересоздавать заново, то надо заранее озаботиться о сохранении всех прав (ntfs). тоже не знаю, как это сделать.
вообщем, вариант, в принципе, вполне рабочий, можно осилить, только лишние операции будут, а если учесть, что там много гигабайт, то это затянется. поэтому и хотелось просто "пробежаться" по файлу нулями и все.


"как заполнить существующий файл нулями?"
Отправлено Сергей , 21-Авг-12 10:24 
> rm -P, а потом dd

гм, кстати, у меня в rm нет такого ключа (-P). однако :( (Slackware)
сначала в нете почитал про этот ключ, а только потом попробовал у себя.


"как заполнить существующий файл нулями?"
Отправлено aurved , 23-Авг-12 12:48 
это из FreeBSD

-P          Overwrite regular files before deleting them.  Files are
            overwritten three times, first with the byte pattern 0xff,
            then 0x00, and then 0xff again, before they are deleted.


"как заполнить существующий файл нулями?"
Отправлено aurved , 16-Авг-12 16:26 
ну или shred

"как заполнить существующий файл нулями?"
Отправлено shredder , 16-Авг-12 16:54 
> ну или shred

dd if=/dev/zero of=/fail bs=1M count=500
ты это имел ввиду?


"как заполнить существующий файл нулями?"
Отправлено And , 16-Авг-12 21:39 
>> ну или shred
> dd if=/dev/zero of=/fail bs=1M count=500
> ты это имел ввиду?

Надо полагать он имел в виду shred. Или wipe c параметром -R и др. Типа такого.


"Заполняю файл _случайными_ нулями!"
Отправлено Andrey Mitrofanov , 17-Авг-12 11:13 
>>> ну или shred
>> dd if=/dev/zero of=/fail bs=1M count=500
>> ты это имел ввиду?
> Надо полагать он имел в виду shred. Или wipe c параметром -R
> и др. Типа такого.

Нет-нет! Только dd, только харджор!


$ ./skhred
-rw-r--r-- 1 one one 6 Авг 17 11:10 file
0000000 31 0a 32 0a 33 0a
0000000 31 0a 00 0a 33 0a
0000000 31 00 00 0a 33 0a
0000000 31 00 00 0a 00 0a
0000000 31 00 00 00 00 0a
0000000 31 00 00 00 00 00
0000000 00 00 00 00 00 00
-rw-r--r-- 1 one one 6 Авг 17 11:10 file
$ ls -l skhred
-rwxr--r-- 1 one one 270 Авг 17 11:10 skhred
$ cat -n skhred
     1  #!/bin/bash
     2  
     3  FILE=file
     4  
     5  seq 1 3 >$FILE
     6  dmp() { od -t x1 $FILE |head -1; }
     7  nol() { dd if=/dev/zero count=1 bs=1 seek=$1 conv=notrunc of=$FILE 2>/dev/null; }
     8  
     9  ls -l $FILE
    10  dmp
    11  for byte in $(seq 0 $(( $(stat -c %s $FILE) -1 )) | shuf); do
    12    nol $byte
    13    dmp
    14  done
    15  ls -l $FILE
$ _


"как заполнить существующий файл нулями?"
Отправлено Сергей , 21-Авг-12 10:28 
> ну или shred

да! точно! благодарю!
в итоге:
shred --random-source=/dev/zero -n1 file.avi