Как уничтожить папку?
Я хочу, чтобы команда полностью уничтожила содержимое папки / каталога (которая может находиться внутри папок / каталогов). Также, пожалуйста, объясните команду.
8 ответов
- Установить пакет
secure-delete
, - Используйте команду
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
Если вы хотите больше настроек параноика, обязательно измените приведенный выше скрипт.
Для файлов, а не каталогов, вот более простой способ, чем -exec shred -u {} \;
направление пути:
cd to your directory.
затем
find . -type f -print0 | xargs -0 shred -fuzv -n 48
это делает 48 проходов рекурсивно в текущий каталог cd
въехал.
Надеюсь, это поможет некоторым.
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
Шред работает только на файлы. Вам нужно сначала уничтожить файлы в каталоге dir/subdirs, а затем удалить каталоги. пытаться
find [PATH_TO_DIR]
и убедитесь, что вы видите только те файлы, которые хотите удалить
find [PATH_TO_DIR] -exec shred -u {} \;
затем удалите dirs с
rm -rf [PATH_TO_DIR]
Вы, вероятно, хотите использовать что-то похожее на это:
find dir -type f -exec shred -fuz {} +
rm -rf dir
Первая команда находит только файлы и передает их в клочок (как можно больше одновременно - не нужно запускать новый процесс крошки для каждого файла, как \; делает). Наконец, удалите каталоги тоже.
Я вставил следующий скрипт 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
}
Если вы хотите сделать это из Nautilus (также известного как приложение «Файлы»), вы можете использовать пакет nautilus-wipe .
-
sudo apt-get install nautilus-wipe
После установки появятся две новые опции, когда вы щелкните папку правой кнопкой мыши: и
Wipe available disk space
. Выбор
Wipe
в папке будут указаны дополнительные параметры (например, количество проходов, быстрый режим, последний проход с нулями).
Когда мне нужно уничтожить несколько файлов или весь каталог, я просто использую shred -vzn 20 ./shredme/*.*
например, который перезаписывает все файлы с любым расширением в папке "shredme". Затем вы можете использовать стандартную команду rm -rf ./shredme, чтобы удалить саму папку (или просто щелкните правой кнопкой мыши и удалите папку), так как все данные были перезаписаны 20 раз для этого примера.
Я сделал быстрый пример этого с кучей дублирующих изображений в качестве примера.