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

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
romaxa
рядовой
Сообщения: 47
Зарегистрирован: 2013-10-17 16:58:52

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

Непрочитанное сообщение romaxa » 2020-05-05 18:27:17

Всем доброе время.

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

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

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

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

cat: stdout: No space left on device

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

guest
проходил мимо

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

Непрочитанное сообщение guest » 2020-05-06 1:40:15

Ужасть, Вы хоть понимаете что означает "no space left on device?"

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

romaxa
рядовой
Сообщения: 47
Зарегистрирован: 2013-10-17 16:58:52

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

Непрочитанное сообщение romaxa » 2020-05-06 8:54:25

Спасибо. В итоге написал такой скрипт, он очищает все свободное место за исключением 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