Shell-Tipps

Löschen und Restaurieren von Dateien

Unter Linux werden wie in jedem Betriebssystem immer wieder Dateien und Verzeichnisse gelöscht. Normalerweise treten dabei keine Probleme auf. Es gibt aber einige Besonderheiten, über die sich ein Anwender im Klaren sein sollte. Einige Problemfälle und mögliche Lösungen werden hier kurz vorgestellt.

Löschen von Dateien mit rm

Der üblicherweise auf der Shell eingesetzte Befehl zum Löschen von Dateien heißt rm (remove file) und gehört zu den GNU file utilities. Sein Einsatz ist unproblematisch und bewirkt, dass der im Argument übergebene Name aus dem übergeordneten Verzeichniskatalog ohne weiteren Kommentar entfernt wird.

$> rm file

Damit löscht rm zwar die Zugriffsmöglichkeit auf die Datei, aber nicht deren Datenblöcke. Wenn für die Zieldatei keine Schreibrechte vereinbart sind (das w-Attribut also fehlt), fragt der Befehl nach, ob die schreibgeschützte Datei wirklich entfernt werden soll:

$> rm file
rm: schreibgeschützte Datei <C>file<C> entfernen?

y gefolgt von RETURN veranlasst rm, den Versuch zu unternehmen, diese Datei zu löschen. Ein solcher Versuch muss aber nicht unbedingt von Erfolg gekrönt sein. Wenn für das Verzeichnis, in dem die Datei vorhanden ist, kein Schreibrecht gesetzt wurde, kann der Dateieintrag auch nicht entfernt werden. Folglich bleibt die Datei erhalten. Der rm-Befehl verfügt über einige nützliche Optionen: Mit -i (oder --interactive) wird rm in einen interaktiven Modus versetzt. In diesem Modus muss das Löschen jeder Datei wie oben gezeigt bestätigt werden, bevor sie aus dem Verzeichnis gelöscht wird. Für Linux-Einsteiger kann es sinnvoll sein, wenn diese Option bei dem Aufruf von rm voreingestellt ist, etwa durch folgende Definition in der Datei $HOME/.bashrc:

$> alias rm='rm -i'

-f (oder --force) wirken wie eine Umkehrung zum interaktiven Modus. Diese Optionen erzwingen das Löschen, wobei die Nachfrage unterdrückt wird. Verzeichnisse können mit rm nur zusammen mit der Option -r (oder -R bzw. --recursive) gelöscht werden.

$> rm -riv dir
rm: in Verzeichnis "dir" absteigen? y RETURN
entfernen aller Einträge in Verzeichnis dir
rm: "dir/file" entfernen?  y RETURN
removing dir/file  y RETURN
Entfernen des Verzeichnises selbst: dir

In diesem Beispiel löscht rm zunächst den Inhalt des Verzeichnisses, anschließend – wenn es leer ist, und nur dann – das Verzeichnis. Die Option -v (oder --verbose) veranlasst rm, alle Aktionen zu kommentieren. Probleme beim Löschen treten beispielsweise dann auf, wenn der Name der zu löschenden Datei mit einem Minuszeichen beginnt:

$> rm -del
rm: Ungültige Option -- "e"
Versuchen Sie "rm --help" für weitere
Informationen.

In diesem Beispiel hat rmden Dateinamen als Option interpretiert. Was ist in so einem Fall zu tun? Eine einfache Lösung für derartige Probleme mit GNU-Befehlen bietet die Spezialoption --. Sie bewirkt, dass alle in der Befehlszeile rechts von ihr stehenden Teile nicht mehr als Optionen, sondern als Textargumente interpretiert werden.

$> rm -- -del

Zeichen, die von der Shell selbst ausgewertet werden (Metazeichen), müssen immer maskiert werden, wenn sie in Dateinamen auftreten:

$> rm file#1*

Mit dieser Befehlszeile versucht rm, Dateien zu entfernen, deren Namen mit den Buchstaben file#1 beginnen. (Das Sternchen ist ein Wildcard-Zeichen und steht für beliebige Zeichenketten.)

$> rm 'file#1*'

So wird eine Datei mit dem Namen file#1* gelöscht. Alternativ könnte auch ein Backslash vor die Metazeichen im Dateinamen gesetzt werden. Entsprechendes gilt übrigens auch für Leerzeichen in Dateinamen:

$> rm file#1\*
$> rm Dateiname\ mit\ Leerzeichen

Sicheres Löschen

Mit rm können zwar Dateien aus dem Dateisystem entfernt werden, aber die Datenblöcke der Dateien bleiben dabei völlig unberührt, zumindest solange, bis eine neue Datei diese Blöcke wieder belegt. Diese Tatsache machen wir uns weiter unten noch zunutze. Bei sensiblen Daten kann dieser Mechanismus unzureichend sein, da prinzipiell die Möglichkeit besteht, Daten aus gelöschten Dateien zurückzugewinnen. Daher muss also eine Möglichkeit gefunden werden, die Datenblöcke vor dem Löschen mit "Datenmüll" zu überschreiben. Danach erst wird eine entsprechende Datei aus dem Dateisystem gelöscht. Eine einfache Lösung für dieses Problem bietet folgendes Script an:

#! /bin/sh
for file in $@
do
  size=`find "$file" -printf "%k"` || continue
  dd if=/dev/urandom of="$file" bs=1k count=$size
  rm -- "$file"
done

Noch viel einfacher geht es aber mit dem Befehl wipe. Dieser verfügt analog zu rm über einen mit -i aktivierbaren interaktiven Modus, durch -f kann das Löschen erzwungen werden, und mit -r oder -R ist die rekursive Bearbeitung von Verzeichnissen möglich. Die man-Page beschreibt die zahlreichen weiteren Optionen.

$> wipe -iv del
wipe: destroy 'del'? y  RETURN

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Daten sicher löschen
    Datensicherung ist in aller Munde, über richtiges Löschen dagegen verliert kaum jemand ein Wort. Für kommerzielle Betriebssysteme kosten Daten-Shredder richtig Geld – Linux erledigt die Aufgabe mit Bordmitteln.
  • Die Cloud-Alternative Copy unter Linux
    Ähnlich wie Dropbox erlaubt es der kommerzielle Cloud-Speicher Copy, Daten sehr einfach zwischen dem Desktop-PC, dem Notebook und dem Smartphone zu synchronisieren oder mit Freunden zu teilen. Aber kann Copy den etablierten Anbietern dabei das Wasser reichen?
  • Abrakadabra…
    Versehentlich gelöschte Dateien bedeuten nicht zwangsläufig deren Verlust. Mit den passenden Werkzeugen stellen Sie viele davon wieder her.
  • Abrakadabra…
    Versehentlich gelöschte Dateien bedeuten nicht zwangsläufig deren Verlust. Mit den passenden Werkzeugen stellen Sie viele davon wieder her.
  • Ext3undel rettet gelöschte Dateien
Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...