Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
23.04.2021, 17:10:35

.
Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
Statistiken
  • Beiträge insgesamt: 730805
  • Themen insgesamt: 58940
  • Heute online: 567
  • Am meisten online: 2287
  • (22.01.2020, 19:20:24)
Benutzer Online

Autor Thema:  [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?  (Gelesen 3041 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Hey! Mir ist gestern ein folgenschwerer Flüchtigkeitsfehler unterlaufen und ich möchte ich hier an dieser kurzen Geschichte teilhaben lassen.

Als ich VirtualBox deinstallierte, meldete mir dpkg, dass das Verzeichnis /usr/lib/virtualbox nicht gelöscht werden konnte, da es nicht leer sei.
Nach einem kurzen Blick entschloss ich mich das Verzeichnis zu löschen und tippte `sudo rm -rf /u<tab>/lib/<ENTER>'
Es dauerte 1-2Sekunden bis ich realisierte was ich getan habe und drückte STRG+C um den Vorgang abzubrechen und den Schaden so weit wie möglich zu begrenzen.

Ich hatte also eine unbekannte Menge von Dateien und Verzeichnissen aus /usr/lib/ gelöscht.. Was nun? Hmm.. Es gibt zu jedem Paket eine Liste mit Dateien, die in dem Paket enthalten sind. Man müsste also nur anhand dieser Listen überprüfen ob die Dateien noch da sind um eine Liste aller fehlenden Dateien zu bekommen. Dann muss man nur noch rausfinden zu welchen Paketen diese Dateien gehören und kann diese erneut installieren um die Dateien wieder herzustellen. Nach kurzem googleln stieß ich auf debsums
Eigentlich ein Tool, um festzustellen ob Dateien verändert wurden, es zeigt aber auch an ob und welche Dateien fehlen.

Nach dem 1. Lauf von `debsums -s > missing_files` hatte eine Liste mit 3153 Zeilen, hier ein kurzer Auszug daraus:
debsums: missing file /usr/lib/xorg/modules/drivers/sisusb_drv.so (from xserver-xorg-video-sisusb package)
debsums: missing file /usr/lib/xorg/modules/drivers/tdfx_drv.so (from xserver-xorg-video-tdfx package)
debsums: missing file /usr/lib/xorg/modules/drivers/trident_drv.so (from xserver-xorg-video-trident package)
debsums: missing file /usr/lib/xorg/modules/drivers/vesa_drv.so (from xserver-xorg-video-vesa package)
debsums: missing file /usr/lib/xorg/modules/drivers/vmware_drv.so (from xserver-xorg-video-vmware package)
debsums: missing file /usr/lib/systemd/user/zeitgeist-fts.service (from zeitgeist-core package)
debsums: missing file /usr/lib/systemd/user/zeitgeist.service (from zeitgeist-core package)
debsums: missing file /usr/lib/zeitgeist/zeitgeist-fts (from zeitgeist-core package)
debsums: missing file /usr/lib/zeitgeist/zeitgeist/zeitgeist-maybe-vacuum (from zeitgeist-core package)
debsums: missing file /usr/lib/zeitgeist/zeitgeist/zeitgeist-vacuum (from zeitgeist-core package)
Man sieht am Ende der Zeile steht das Paket, aus dem die Datei stammt... ich musste mir aus dieser Liste also nur noch eine Liste mit Paketnamen erstellen.. Gedacht getan (Ausgabe gekürzt):
$: cut missing_files -f 2 -d '('|tr -d ')'|cut -f 2 -d ' '|sort -u
xserver-xorg-video-neomagic
xserver-xorg-video-nouveau
xserver-xorg-video-r128
xserver-xorg-video-radeon
xserver-xorg-video-savage
xserver-xorg-video-sisusb
xserver-xorg-video-tdfx
xserver-xorg-video-trident
xserver-xorg-video-vesa
xserver-xorg-video-vmware
zeitgeist-core
Um die Pakete erneut zu installieren habe ich dann folgenden Befehl genutzt:
sudo apt-get --reinstall install $(cut missing_files -f 2 -d '('|tr -d ')'|cut -f 2 -d ' '|sort -u)
Ein erneuter Lauf von debsums bestätigt mir: Alle Dateien sind wieder da und ich kann beruhigt schlafen gehen :)

EDIT: Tippfehler korrigiert
« Letzte Änderung: 27.02.2017, 13:31:22 von atze »

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #1 am: 27.02.2017, 11:42:19 »
Don't drink and root!

sc44

  • Gast
Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #2 am: 27.02.2017, 12:33:43 »
Hallo,
so ein einen blöder Fehler kann jedem passieren. Danke fürs posten wie man es wieder hinbekommt.  8)

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #3 am: 27.02.2017, 12:37:11 »
Coole Sache, wie du das wieder hingebogen hast! Da muss man erst mal drauf kommen!

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #4 am: 27.02.2017, 13:30:37 »
Don't drink and root!
Guter Tipp! Leider kann einem (also zumindest mir) auch ohne Alkohol passieren. Rückblickend war mein Fehler wohl, dass ich einfach nicht bei der Sache war und gedanklich schon mit der Frage beschäftigt war ob ich VirtualBox jetzt aus unstable oder direkt von virtualbox.org installiere, da es zur Zeit nicht in testing ist

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #5 am: 27.02.2017, 13:35:01 »
War ja auch nicht Bierernst gemeint :)

Na klar kann so etwas passieren wenn man nicht bei der Sache ist, insofern hast du Glück gehabt das du es noch beheben konntest, ohne Neuinstallation. Sollte allerdings als gutes Beispiel für alle, besonders für Anfänger dienen, das man stets vorsichtig sein sollte wenn man als root oder sudo arbeitet. Einmal zu schnell Enter gedrückt und futsch sind die Daten :)

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #6 am: 27.02.2017, 17:53:23 »
Gute Idee sowas zu teilen.

Die Holzhammer Methode wäre wohl einfach alles neu zu installieren, irgendwie so:
for i in $(dpkg-query -f '${binary:Package}\n' -W | awk '{print $1}')  ; do echo $i ; doneHalt echo nach nem Probelauf durch die gewünschte Aktion ersetzen wie zB
apt-get -y install --reinstallZu:
for i in $(dpkg-query -f '${binary:Package}\n' -W | awk '{print $1}')  ; do apt-get -y install --reinstall $i ; done
Nutze selbst mittlerweile wieder BTRFS auf meiner Root Partition wegen der Snapshot Funktion.

secureIT

  • Gast
Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #7 am: 27.02.2017, 18:47:17 »
Danke, atze !!!

echt G E N I A L  !

...... kommt bei mir ins Archiv "Linux-Strategien in schwierigen Situationen"

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #8 am: 27.02.2017, 20:18:07 »
kommt bei mir ins Archiv "Linux-Strategien in schwierigen Situationen"
Hallo in die Runde,
für schwierige Situationen würde ich mir diesen Befehl von "Bobby" auch gern hinterlegen. Da ich aber noch nicht so lang mit LinuxMint18.1 unterwegs bin möchte ich gern wissen ob der Befehl generell zur Wiederherstellung entfernter bzw. beschädigter Dateien angewendet werden kann und warum in der Befehlszeile von "Bobby" "nur" ein do apt-get anstatt eines sonst üblichen sudo apt-get angewendet wird.
for i in $(dpkg-query -f '${binary:Package}\n' -W | awk '{print $1}')  ; do apt-get -y install --reinstall $i ; done

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #9 am: 27.02.2017, 20:21:41 »
Zitat
apt-get anstatt eines sonst üblichen sudo apt-get angewendet wird.
Weil er vermutlich als Root gearbeitet hat, dann braucht man kein sudo.

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #10 am: 27.02.2017, 23:38:59 »
möchte ich gern wissen ob der Befehl generell zur Wiederherstellung entfernter bzw. beschädigter Dateien angewendet werden kann
Nein. Nicht generell. In diesem Fall greift das weil Daten beschädigt/gelöscht wurden welche die installierten Paket betreffen.
Welche Dateien zu jedem Paket dazugehören weiß das System aber sehr genau bzw. kann das feststellen. Werden pauschal alle Paket neu installiert ist also alles wieder ok.
Daten die nicht zum System gehören, z.B. auf einem eingehängten Datenträger (ext2,3,4) wirst du vmtl. nur mit Werkzeugen wie debugfs oder testdisk wiederherstellen können.

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #11 am: 28.02.2017, 09:47:28 »
Hallo in die Runde und danke für die Infos.
Wiederherstellung entfernter bzw. beschädigter Dateien
Mit "Wiederherstellung entfernter" Dateien meinte ich wie von TE beschrieben das versehentliche Löschen von Dateien auf / und /home , nicht auf entfernten Laufwerken.
Mir ist nur immer noch nicht ganz klar ob ich den von "Bobby" genannten Befehl:
for i in $(dpkg-query -f '${binary:Package}\n' -W | awk '{print $1}')  ; do apt-get -y install --reinstall $i ; done
zur Wiederherstellung auf meinem System so nutzen kann? Ich hab bisher keine Erfahrung in UNIX-Programmierung und hatte nach dem Begriff "awk '{print $1}')" gesucht und dort etwas gefunden. Wenn ich das richtig interpretiere benötigt der Befehl "AWK" doch eine Datei mit den Namen der wiederherzustellenden Dateien, oder?

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #12 am: 28.02.2017, 10:21:29 »
@kuehhe1

Wenn ich das richtig interpretiere benötigt der Befehl "AWK" doch eine Datei mit den Namen der wiederherzustellenden Dateien, oder?
In diesem Fall nur indirekt. Hier kommen die Pakte für awk aus der Pipe.
dpkg-query -f '${binary:Package}\n' -Werstellt eine formatierte Liste der Pakete
Die Pipe (|) übergibt diese dann an awk.
Die Schleife arbeitet die Pakete Step by Step mit apt-get ab.

Kann ausführlicher auch hier nachgelesen werden.

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #13 am: 28.02.2017, 10:47:27 »
Mit "Wiederherstellung entfernter" Dateien meinte ich wie von TE beschrieben das versehentliche Löschen von Dateien auf / und /home , nicht auf entfernten Laufwerken.
Dateien aus "/" ja, wenn diese aus einem Paket stammen, dass sich mit apt-get erneut installieren lässt.
Dateien aus "/home" stammen nicht aus Paketen und können entsprechend auch nicht durch die erneute Installation eines Pakets installiert werden.

Ich versuche es mal mit einem einfachen Beispiel zu verdeutlichen:
Angenommen ich lösche ausversehen diese Datei:
/bin/lsUm die Datei wiederzubekommen, muss ich nur das Paket erneut installieren, aus dem sie stammt, dass kann mir z.B dpkg verraten
$: dpkg -S /bin/ls
coreutils: /bin/ls
Das Paket heißt also coreutils und ich kann das Paket (und somit die Datei /bin/ls) mit diesem Befehl erneut installieren:
sudo apt-get install --reinstall coreutilsDas funktioniert mit allen Dateien zu denen dpkg -S ein Paket finden kann.

Re: [blog] sudo rm -rf /usr/lib - Alles verloren! Oder doch nicht?
« Antwort #14 am: 28.02.2017, 12:38:31 »
Hallo in die Runde,
vielen Dank für Eure "sehr ausführlichen Erklärungen". ;)
So langsam dämmerts bei mir und die Erläuterung auf UU zur "Pipe (|) Funktion" habe ich mir auch angesehen. ::) Anhand Eurer und der UU Beispiele werde ich das später mal testen, so gesehen gibt es eine gute Rettungsfunktion falls mal wirklich (wieder) ein Malheur passiert. Mir ist nämlich vor einiger Zeit ähnliches bei einer "Vollständigen Entfernung" des kodi Paketes unterlaufen, da wurde etliches andere gleich mit deinstalliert.  :(

So gesehen wäre die "Erstellung einer formatierten Liste" mit:
dpkg-query -f '${binary:Package}\n' -Wvor risikobehafteten Aktionen gar nicht so verkehrt. In welchem Verzeichnis wird diese Liste durch den Befehl erstellt?

Den Beitrag hab ich mir gleich in Lesezeichen gespeichert!
« Letzte Änderung: 28.02.2017, 12:42:06 von kuehhe1 »