Как удаляют файл начинающие параноики
На модерации
Отложенный
Для вас параноики!
Вам очень нужно удалить файл с затруднением восстановления? Тогда вам сюда. По нынешним временам только удалить файл уже недостаточно. Для ленивых пользователей Windows всё уже сделали парни из SysInternals (download.sysinternals.com/files/SDelete.zip). Ну а для тех, кому не для Windows– читаем дальше. Сначала немного отвлечённой теории. В каждом Linuxи даже CygWin есть два прекрасных файла:
- /dev/random – генератор случайных чисел
- /dev/urandom– генератор псевдослучайных чисел
Для наших нужд разница между ними несущественна. Использовать их можно следующим образом:
dd if=/dev/random of= bs= count=
Однако я ленив и мне захотелось чтобы всё делалось само, по имени файла. И для этого я использовал следующие заклинания:
- wc –c - определяет размер файла в байтах
- awk -- 'BEGIN{printf("%d",ARGV[1]/ARGV[2])}' "$x" – определяет число блоков по размеру файла (размер файла будет уменьшен)
- awk -- 'BEGIN{printf("%d",ARGV[1]/ARGV[2]+1)}' "$x" – определяет число блоков по размеру файла для тех, кто считает что ни одного байта не должно достаться врагу (размер файла будет увеличен)
Результаты автоматизации можно свести к следующему командному файлу:
#!/bin/sh
if [ -z "$1" ]
then
# нет входного параметра - пишем, что должен быть
s=`basename $0`
echo "usage: $s "
exit 1
else
if [ -f "$1" ]
then
if [ -w "$1" ]
then
s=`wc -c $1` # размер файла
b=512 # размер блока
# количество блоков
c=`awk -- 'BEGIN{printf("%d",ARGV[1]/ARGV[2])}' "$s" "$b"`
# вывод команды перенаправляется в никуда
dd if=/dev/random of="$1" bs="$b" count="$c" > /dev/null 2>&1
# файл перезаписан - можно удалять
#rm -f "$1" # снимите комментарий (#) перед rm, если надо удалить
else
# нет доступа на запись в файл
echo "File is not writable:$1"
exit 2
fi
else
# переданное имя показывает не на файл
echo "Not a file:$1"
exit 3
fi
fi
Комментарии