Страница 1 из 1

Забиваем пустое место нулями, побороть stdout

Добавлено: 2020-05-05 18:27:17
romaxa
Всем доброе время.

Пользуюсь вот такой конструкцией для забивания свободного места нолями.

Код: Выделить всё

#!/bin/sh
cat /dev/zero > /zero.dump;sync;sleep 1;sync;rm -f /zero.dump &
При этом компрессия выключена, сделано с целью создания vmware образов небольшого размера.

Комманда ругается в итоге

cat: stdout: No space left on device

Понятно, что отрабатывает при этом.
Можно ли как-то побороть этот процесс?

Забиваем пустое место нулями, побороть stdout

Добавлено: 2020-05-06 1:40:15
guest
Ужасть, Вы хоть понимаете что означает "no space left on device?"

откройте для себя dd, truncate, а в скрипте треба порверять сколько
свободного места на FS.

Забиваем пустое место нулями, побороть stdout

Добавлено: 2020-05-06 8:54:25
romaxa
Спасибо. В итоге написал такой скрипт, он очищает все свободное место за исключением 10Мб. Мне идеальная затирка до байта не нужна.

Получилось так:

Код: Выделить всё

#!/bin/sh
# take available size from string
DISKSIZE=`df / | grep / | cut -d " " -f 5`

#minus 10mb
TODELETE=$(( (DISKSIZE - 10000)/1000 ))

dd if=/dev/zero of=/zero.dump bs=1M count=$TODELETE 2> /dev/null
sync
rm -f /zero.dump