Как уничтожить папку?


18

Я хочу, чтобы команда полностью уничтожила содержимое папки / каталога (которая может находиться внутри папок / каталогов). Также, пожалуйста, объясните команду.


Определите «клочок». Если вы просто имеете в виду, что shredделает команда, тогда есть ваш ответ.
psusi

Очень тесно связаны: askubuntu.com/questions/57572/…
Таккат

@ psusi- shred Я имею в виду удалить файл без возможности восстановления. я использовал команду shred, но так как она применима только к файлам, я хотел, чтобы подобная команда удаляла папки и файлы внутри нее.
Ашу

Кто из них делает работу отлично shredили secure-delete?
Ашу

1
Для других пользователей, которые спотыкаются здесь, имейте в виду, что shred это не так эффективно, как вы думаете, потому что современные файловые системы и оборудование не перезаписывают данные на месте, а вместо этого регистрируют изменения или перемещают их для выравнивания износа. Связанный: unix.stackexchange.com/questions/27027/…
Майк Оунсворт

Ответы:


27
  1. Установите пакет secure-delete.
  2. Используйте команду, srm -r pathnameчтобы удалить вашу папку и файлы.

Настройки по умолчанию для 38 (!!!) проходов перезаписей, что является крайним перебором imho (см. Дополнительную информацию об этом здесь ).

Для моего использования я хочу только один проход случайных данных, поэтому я использую srm -rfll pathname.

Если вы хотите создать опцию щелчка правой кнопкой мыши в графическом интерфейсе для файлов и папок, используйте gnome-actions для вызова такого скрипта:

#!/bin/bash
if dialog=`zenity --window-icon=warning --question --title="Secure Delete" --no-wrap --text="Are you sure you want to securely delete:\n\n     $1\n\nand any other files and folders selected? File data will be overwritten and cannot be recovered."` 
then /usr/bin/srm -fllrv "$@"| zenity --progress --pulsate --text="File deletion in progress..." --title="Secure Delete" --auto-close
fi 

Если вы хотите больше настроек параноика, обязательно измените приведенный выше скрипт.


1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode, -l lessens the security (use twice for total insecure mode), не могли бы вы объяснить эти две вещи. 38 перезаписывает по умолчанию, как они влияют на значение «38». и почему lдва раза в-rfll
Ашу

2
Итак, весь процесс по умолчанию: 1 проход с 0xff (нулевая очистка), 5 случайных проходов с / dev / urandom используется для безопасного RNG, если он доступен, 27 проходов со специальными значениями, определенными Питером Гутманом, еще 5 случайных проходов из / DEV / случайным образом . Затем переименуйте файл в случайное значение и обрежьте файл. IIRC, / dev / random считается лучшей системой генерации случайных чисел. Используя -fll, мы пропускаем 1 + 5 + 27 + 5 проходов и подставляем один проход случайных данных, возможно, из менее «действительно случайного» генератора.
Veazer

@Ashu сократил со страницы руководства (Debian Jessie) для srm; (frist) -l: only two passes, (second) -l: only one pass. Для других -f: fast (Non-secure random bits)и -r: recursive. Я также настоятельно рекомендую -v: verbose. Я бы также предложил запустить это в одном screenслучае, это может занять много времени для большого количества данных.
ThorSummoner

1
Я заменил /usr/bin/srm -fllrvнаbleachbit -s

8

Для файлов, а не каталогов, вот более простой способ вместо -exec shred -u {} \;типа:

cd to your directory.

тогда

find . -type f -print0 | xargs -0 shred -fuzv -n 48

это делает 48 проходов рекурсивно в текущий каталог, в который вы cdввели.

Надеюсь, это поможет некоторым.


Добавление '-print0' для поиска и '-0' для xargs? Каталоги могут иметь пробелы в своих именах.
слабый

Хороший ответ, но почему вы используете XARGS ?? Я не понимаю xargs
Чинмайя Б

1

Шред работает только на файлы. Вам нужно сначала уничтожить файлы в каталоге dir / subdirs, а затем удалить каталоги. пытаться

find [PATH_TO_DIR] 

и убедитесь, что вы видите только те файлы, которые хотите удалить

find [PATH_TO_DIR] -exec shred -u {} \;

затем удалите dirs с

rm -rf [PATH_TO_DIR]

Можете ли вы объяснить, пожалуйста {} \;. также где-то elsi я видел ту же команду, что и вы, но это была '{}' \;разница между этими двумя ??
Ашу

Поскольку shred не работает с каталогами, как насчет добавления опции -type f к командам поиска?
Андол

@ andol: да, я думал об этом ..
Ашу

1
Не могу объяснить это лучше, чем man-страница find .... the {} и \; являются частью опции -exec поиска.
Ruediger

1

Вы, вероятно, хотите использовать что-то похожее на это:

find dir -type f -exec shred -fuz {} +
rm -rf dir

Первая команда находит только файлы и передает их в клочок (как можно больше одновременно - не нужно запускать новый процесс крошки для каждого файла, как \; делает). Наконец, удалите каталоги тоже.


1

sudo apt install wipe

$ wipe -rfi dir/*

где используются флаги: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process


0

Я вставил следующий скрипт bash для этой цели в мой .bashrc

function rm2 {

  for var in $@
  do
  if [ -d $var ]
  then
     nohup $( /usr/bin/find "$var" -type f -exec  shred -n 2 -u -z -x {} \;;/bin/rm -rf "$var" ) & 
  else
    nohup /usr/bin/shred -x -n 2 -u -z "$var" & 
  fi
done
exit
}

-1

Когда мне нужно уничтожить несколько файлов или весь каталог, я просто использую shred -vzn 20 ./shredme/*.* например, который перезаписывает все файлы с любым расширением в папке «shredme». Затем вы можете использовать стандартную команду rm -rf ./shredme, чтобы удалить саму папку (или просто щелкните правой кнопкой мыши и удалите папку), так как все данные были перезаписаны 20 раз для этого примера.

Я сделал быстрый пример этого с кучей дублирующих изображений в качестве примера.

Скриншот терминала

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.