Как затереть файл нулями в AIX?

Главная Форумы POWER Systems AIX/Hardware Как затереть файл нулями в AIX?

В этой теме 8 ответов, 5 участников, последнее обновление  Dmitry 4 года/лет, 10 мес. назад.

  • Автор
    Сообщения
  • #19217

    Olegg
    Участник

    Добрый день, Уважаемые форумчане!

    Может знает кто, как при удалении (или перед удалением) затереть файл нулями или единицами для невозможности его восстановления?

    Заранее СПАСИБО!

    С Уважением, Олег.

  • #19219

    uxTuaHgp
    Участник

    dd if=/dev/zero of=filename bs=1024 count=

    вроде так
    рекомендую покурить man dd

  • #19222

    Olegg
    Участник

    БОЛЬШОЕ Спасибо!!! 🙂 🙂 🙂
    Вы мне очень помогли!
    На удивление оказалось, что во всех unix_ах нет штатных средств затирания файлов при удалении…
    Вот помню на OpenVMS было штатное средство – “DELETE/ERASE” и все просто…

    С Уважением, Олег.

  • #19228

    uxTuaHgp
    Участник

    Я думал OpenVMS уже забыта напрочь.
    А dd – во всех юниксах есть 😉

  • #19251

    DanGer
    Участник

    Это точно! Семь проблем – один dd!
    И операционку “склонировать”, и загрузочную флешку сделать, и затереть нулями, и загрузочную запись восстановить… Думаю, можно и не такое совершить 🙂

  • #19262

    Stanley
    Участник

    Помогите сделать скрипт по этому вопросу.

    Я только дебютирую в этом
    Допустим задача затереть все файлы в папке этим способом, т.е через dd

    Я пытаюсь, вот так
    ls | while read i junk; do dd if=/dev/zero of=$i bs=1024 count= (ВОТ ТУТ ТО И ПРОБЛЕМА)

    Конечно только файл входит в i, а вот как узнать count и вставить? Что использовать?
    хмм…
    У меня пока еще плохо получается со скриптами. :blush: Если посоветуете что почитать по скриптам буду благодарен 😉

  • #19264

    Dmitry
    Участник

    Как-то так
    [code]
    cd /path
    find * -prune -type f -ls | awk ‘{file=$11; size=$7; if (size%1024) {size=int(size/1024)+1} else {size=int(size/1024)}; {for(i=12;i<=NF;++i) file=file"\ "$i}; print size" "file}' | while read size file; do dd if=/dev/zero of=./"$file" bs=1024 count="$size"; done
    [/code]
    Используйте аккуратно – скрипт ничего не спрашивает, затирает все файлы которые найдет в текущей директории. При этом не ходит в поддиректории.

    Если надо, что бы ходил рекурсивно – уберите "-prune" в find
    Может вам лучше надо всю партицию затереть нулями, а не отдельные файлы?

  • #19265

    Stanley
    Участник

    Великолепно, спасибо… все работает, буду грызть awk чтоб понять что и как, а то вот смотрю

    {for(i=12;i<=NF;++i) file=file"\ "$i}

    ну как бы никак не лезет в голову. :silly:
    Не секрет сколько вы работаете с уникс-аикс?

  • #19266

    Dmitry
    Участник

    С юниксами чуть больше 5 лет плотно, и 10 лет, если не плотно 🙂
    касаемо
    [code]{for(i=12;i<=NF;++i) file=file"\ "$i}[/code]
    это достаточно грязный хак, что бы скрипт не спотыкался на файлах в которых есть пробелы в имени. Он значит следующее: взять все колонки от 12 и до конца строки и объединить их, вставляя между полями " ". Двойной слеш – для экранирования.

Для ответа в этой теме необходимо авторизоваться.