Jak zniszczyć folder?

18

Chcę, aby polecenie całkowicie zniszczyło zawartość folderu / katalogu (który może znajdować się w folderach / katalogach). Proszę również wyjaśnić polecenie.

Ashu
źródło
Zdefiniuj „niszczenie”. Jeśli masz na myśli tylko to, co shredrobi polecenie, to jest twoja odpowiedź.
psusi
Bardzo blisko spokrewnione: askubuntu.com/questions/57572/…
Takkat
@ psusi- przez shred mam na myśli usunięcie pliku, którego nie można odzyskać. Korzystałem z polecenia niszczenia, ale ponieważ dotyczyło to tylko plików, chciałem podobnego polecenia, aby usunąć foldery i pliki w nim zawarte.
Ashu
Który z nich spełnia swoje zadanie doskonale shredalbo secure-delete?
Ashu
1
W przypadku innych użytkowników, którzy się tutaj natkną, uważaj, shred nie jest to tak skuteczne, jak myślisz, ponieważ nowoczesne systemy plików i sprzęt nie zastępują danych w miejscu, ale rejestrują zmiany lub przenoszą je w celu wyrównywania zużycia. Powiązane: unix.stackexchange.com/questions/27027/...
Mike

Odpowiedzi:

27
  1. Zainstaluj pakiet secure-delete.
  2. Użyj polecenia, srm -r pathnameaby usunąć folder i pliki.

Domyślne ustawienia dotyczą 38 (!!!) przebiegów nadpisywania, co jest skrajnym przesadnym imho (zobacz więcej informacji na ten temat tutaj ).

Do mojego użytku potrzebuję tylko jednego losowego losu danych, więc używam srm -rfll pathname.

Jeśli chcesz utworzyć opcję GUI dla plików i folderów, klikając prawym przyciskiem myszy, użyj gnome-action, aby wywołać skrypt w następujący sposób:

#!/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 

Jeśli chcesz więcej ustawień paranoicznych, zmodyfikuj powyższy skrypt.

Veazer
źródło
1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). czy mógłbyś wyjaśnić te dwie rzeczy. Zastępowanie 38 jest domyślne, w jaki sposób wpływają one na wartość „38”. i dlaczego ldwa razy w-rfll
Ashu
2
OK, cały domyślny proces to: 1 przebieg z 0xff (zerowe czyszczenie), 5 losowych przebiegów z / dev / urandom służy do bezpiecznego RNG, jeśli jest dostępny, 27 przebiegów ze specjalnymi wartościami zdefiniowanymi przez Petera Gutmanna, kolejne 5 losowych przebiegów z / dev / random. Następnie zmień nazwę pliku na losową i skróć plik. IIRC, / dev / random jest uważany za lepszy system generowania liczb losowych. Używając -fll, pomijamy przebiegi 1 + 5 + 27 + 5 i zastępujemy jednym przejściem losowych danych, być może z mniej „prawdziwie losowego” generatora.
Veazer
@Ashu skrócono ze strony man (Debian Jessie) dla srm; (frist) -l: only two passes, (second) -l: only one pass. Dla innych -f: fast (Non-secure random bits)i -r: recursive. Bardzo polecam -v: verbose. Sugerowałbym również uruchomienie tego w screeninstancji, może to zająć sporo czasu na dużej ilości danych.
ThorSummoner
1
Wymieniłem /usr/bin/srm -fllrvzbleachbit -s
8

W przypadku plików, które nie są katalogami, oto prostszy sposób zamiast -exec shred -u {} \;rodzaju:

cd to your directory.

następnie

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

robi to 48 przechodzi rekurencyjnie do bieżącego katalogu, w którym się cdznajdujesz.

Mam nadzieję, że to pomaga niektórym.

memorysticky
źródło
Dodanie „-print0” do znalezienia i „-0” do xargs? Katalogi mogą mieć spacje w swoich nazwach.
słaby
Dobra odpowiedź, ale dlaczego używasz xargs? Nie rozumiem Xargs.
Chinmaya B
1

Shred działa tylko na plikach. Najpierw musisz zniszczyć pliki w katalogu dir / subdir, a następnie usunąć katalogi. próbować

find [PATH_TO_DIR] 

i upewnij się, że widzisz tylko pliki, które chcesz usunąć

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

następnie usuń katalog za pomocą

rm -rf [PATH_TO_DIR]
Ruediger
źródło
czy możesz wyjaśnić {} \; . też gdzieś Elsi widziałem to samo polecenie jak twoje, ale '{}' \;jaka jest różnica między tymi dwoma?
Ashu
Ponieważ shred nie działa na katalogach, co powiesz na dodanie opcji -type f do poleceń find?
andol
@ andol: tak, myślałem o tym ..
Ashu
1
Nie mogę tego wytłumaczyć lepiej niż strona man find .... {} i \; są częścią opcji -exec znalezienia.
Ruediger
1

Prawdopodobnie chcesz użyć czegoś podobnego do tego:

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

Pierwsze polecenie wyszukuje tylko pliki i przekazuje je do niszczenia (tak wiele, jak to możliwe - nie trzeba uruchamiać nowego procesu niszczenia dla każdego pliku, jak \; robi). Na koniec usuń także katalogi.

użytkownik1338062
źródło
1

sudo apt install wipe

$ wipe -rfi dir/*

gdzie użyte flagi: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process

cryptoboy
źródło
0

W tym celu wstawiłem w skrypcie .bashrc następujący skrypt bash

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
}
Piotr Hornyak
źródło
-1

Kiedy muszę zniszczyć wiele plików lub cały katalog, po prostu używam shred -vzn 20 ./shredme/*.*na przykład, który zastępuje wszystkie pliki dowolnym rozszerzeniem w folderze „shredme”. Następnie możesz użyć standardowej komendy rm -rf ./shredme, aby usunąć sam folder (lub po prostu kliknij prawym przyciskiem myszy i usuń folder), ponieważ w tym przykładzie wszystkie dane zostały zastąpione 20 razy.

Zrobiłem szybki przykład tego z garstką zduplikowanych obrazów jako przykładem.

Zrzut ekranu terminalu

Linuxer
źródło