Wie zerkleinere ich einen Ordner?

18

Ich möchte, dass ein Befehl den Inhalt eines Ordners / Verzeichnisses (der sich möglicherweise in Ordnern / Verzeichnissen befindet) vollständig löscht. Bitte erläutern Sie auch den Befehl.

Ashu
quelle
Definieren Sie "Shred". Wenn Sie nur meinen, was der shredBefehl tut, dann haben Sie die Antwort.
Psusi
Sehr eng verwandt: askubuntu.com/questions/57572/…
Takkat
@ psusi- by shred ich meine Datei unwiederbringlich löschen. Ich habe den Befehl shred verwendet, aber da dies nur für Dateien gilt, wollte ich einen ähnlichen Befehl, um Ordner und Dateien darin zu löschen.
Ashu
Welches macht den Job perfekt shredoder secure-delete?
Ashu
1
Beachten Sie, dass andere Benutzer, die hier stolpern, shred nicht so effektiv sind, wie Sie denken, da moderne Dateisysteme und Hardware keine Daten überschreiben, sondern die Änderungen protokollieren oder zum Ausgleich der Abnutzung verschieben. Related: unix.stackexchange.com/questions/27027/…
Mike Ounsworth

Antworten:

27
  1. Installieren Sie das Paket secure-delete.
  2. Verwenden Sie den Befehl srm -r pathname, um Ihren Ordner und Ihre Dateien zu entfernen.

Die Standardeinstellungen sind für 38 (!!!) Überschreibungsdurchläufe, was imho extrem übertrieben ist (weitere Informationen hierzu finden Sie hier ).

Für meine Verwendung möchte ich nur einen einzigen Durchgang von Zufallsdaten, also verwende ich srm -rfll pathname.

Wenn Sie in der Benutzeroberfläche eine Rechtsklick-Option für Dateien und Ordner erstellen möchten, verwenden Sie gnome-actions, um ein Skript wie das folgende aufzurufen:

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

Wenn Sie mehr paranoide Einstellungen wünschen, müssen Sie das obige Skript ändern.

Veazer
quelle
1
-f fast (and insecure mode): no /dev/urandom, no synchronize mode. -l lessens the security (use twice for total insecure mode). Können Sie mir bitte diese beiden Dinge erklären? 38 überschreiben ist die Standardeinstellung, wie sich diese auf den Wert '38' auswirken. und warum lzweimal in-rfll
Ashu
2
OK, der gesamte Standardprozess ist: 1 Durchgang mit 0xff (ein Null-Wipe), 5 zufällige Durchgänge mit / dev / urandom werden für ein sicheres RNG verwendet, sofern verfügbar, 27 Durchgänge mit speziellen von Peter Gutmann definierten Werten, weitere 5 zufällige Durchgänge von / dev / random. Benennen Sie dann die Datei in einen zufälligen Wert um und kürzen Sie die Datei. IIRC, / dev / random wird als ein besseres System zur Erzeugung von Zufallszahlen angesehen. Mit -fll überspringen wir die Durchläufe 1 + 5 + 27 + 5 und ersetzen sie durch einen einzelnen Durchlauf von Zufallsdaten, möglicherweise von einem weniger "wirklich zufälligen" Generator.
Veazer
@Ashu aus der Manpage (Debian Jessie) für srm gekürzt; (frist) -l: only two passes, (second) -l: only one pass. Für andere -f: fast (Non-secure random bits)und -r: recursive. Ich schlage auch sehr vor -v: verbose. Ich würde auch vorschlagen, dies in einer screenInstanz auszuführen, da dies bei vielen Daten eine Weile dauern kann.
ThorSummoner
1
Ich habe ersetzt /usr/bin/srm -fllrvdurchbleachbit -s
8

Für Dateien, die keine Verzeichnisse sind, gibt es eine einfachere Möglichkeit als die -exec shred -u {} \;Art des Weges:

cd to your directory.

dann

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

Dies passiert 48 rekursiv das aktuelle Verzeichnis, in das Sie sich cdangemeldet haben.

Hoffe das hilft einigem.

memorysticky
quelle
Hinzufügen von '-print0' zu find und '-0' zu xargs? Verzeichnisse können Leerzeichen in ihren Namen enthalten.
schwache
Gute Antwort, aber warum benutzt du Xargs? Ich verstehe Xargs nicht.
Chinmaya B
1

Shred funktioniert nur bei Dateien. Sie müssen zuerst die Dateien im Verzeichnis / subdirs zerkleinern und dann die Verzeichnisse entfernen. Versuchen

find [PATH_TO_DIR] 

und stellen Sie sicher, dass Sie nur die Dateien sehen, die Sie löschen möchten

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

dann entferne die dirs mit

rm -rf [PATH_TO_DIR]
Rüdiger
quelle
kann u bitte erklären {} \;. auch irgendwo elsi ich hatte den gleichen befehl gesehen wie du aber '{}' \;was ist der unterschied zwischen den beiden ??
Ashu
Wie wäre es, wenn Sie den find-Befehlen die Option -type f hinzufügen, da shred für Verzeichnisse nicht funktioniert?
Andol
@ Andol: Ja, ich dachte daran ..
Ashu
1
Kann es nicht besser erklären als die Suchmanpage .... die {} und \; sind Teil der Option -exec des Finds.
Rüdiger
1

Sie möchten wahrscheinlich etwas Ähnliches verwenden:

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

Der erste Befehl findet nur Dateien und übergibt sie an shred (so viele wie möglich gleichzeitig - es ist nicht erforderlich, für jede Datei einen neuen Shred-Vorgang zu starten, wie dies bei \; der Fall ist). Schließlich entfernen Sie auch die Verzeichnisse.

user1338062
quelle
1

sudo apt install wipe

$ wipe -rfi dir/*

Wo die Flaggen benutzt wurden: -r – tells wipe to recurse into subdirectories -f – enables forced deletion and disable confirmation query -i – shows progress of deletion process

Cryptoboy
quelle
0

Ich habe das folgende Bash-Skript zu diesem Zweck in meine .bashrc eingefügt

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
}
Peter Hornyak
quelle
-1

Wenn ich mehrere Dateien oder ein ganzes Verzeichnis vernichten muss, benutze ich einfach shred -vzn 20 ./shredme/*.* schreddern muss, verwende zum Beispiel, das alle Dateien mit einer beliebigen Dateierweiterung im Ordner "shredme" überschreibt. Dann können Sie den Standardbefehl rm -rf ./shredme verwenden, um den Ordner selbst zu entfernen (oder einfach mit der rechten Maustaste darauf klicken und den Ordner löschen), da in diesem Beispiel alle Daten 20 Mal überschrieben wurden.

Ich habe ein kurzes Beispiel dafür mit ein paar doppelten Bildern als Beispiel gemacht.

Terminal-Screenshot

Linuxer
quelle