Versehentlich sudo rm / * auf einem Remote-Server ausgeführt


11

Ich habe versehentlich ausgeführt, rm /*während ich als root in einem Remote-Ubuntu-Server angemeldet war, und so gut wie alle Binärdateien gelöscht. Derzeit kann ich mich weder über ssh noch über ftp anmelden, um die Dateien wiederherzustellen (und hoffe auf das Beste).

Gibt es eine Möglichkeit, dieses Problem irgendwie zu beheben, oder sollte ich das Rechenzentrum anrufen und nach einem Format fragen?


2
Können Sie bestätigen, ob es sich um einen physischen oder einen virtuellen Server handelt? Auch, ob Sie das -rArgument ausgeführt haben rmoder wirklich nur den Befehl ausgeführt haben, den Sie anzeigen. Bietet Ihr Hosting-Anbieter eine Möglichkeit, auf die Disk-Images außerhalb dieses bestimmten Computers zuzugreifen?
Caleb

Antworten:


26

rm /*sollte sehr wenig löschen. Es gibt dort kein -rFlag, das rekursiv etwas löschen würde, und ohne dieses Flag werden Verzeichnisse nicht gelöscht (und selbst wenn Verzeichnisse gelöscht wurden, können nur leere gelöscht werden). Diese Antwort basiert auf der Annahme, dass Sie nicht ausgeführt wurden rm -rf /*.

Die einzigen Dateien im Root-Dateisystem, die von Bedeutung sind, können die Symlinks zu Kernel und initrd (obwohl sie auf einem Ubuntu-System, das ich betrachte, nicht vorhanden sind) oder ein /lib64Symlink auf 64-Bit-Systemen sein.

Das Problem kann nur sein, dass der /lib64 -> /libSymlink gelöscht wurde. Das ist allerdings ziemlich böse, da fast jedes Programm auf diesen Symlink angewiesen ist:

$ ldd /bin/bash
...
    /lib64/ld-linux-x86-64.so.2 (0x00007f8946ab7000)

Dies ld-linuxist der dynamische Loader. Wenn er nicht verfügbar ist, können Sie keine dynamischen ausführbaren Dateien ausführen. Dies macht es äußerst schwierig, sich anzumelden, und Sie können dies möglicherweise überhaupt nicht.

Ein Retter kann sein busybox. Führen Sie dies aus, um Folgendes zu überprüfen:

$ ldd /bin/busybox
    not a dynamic executable

In diesem Fall sollte die Busybox ausführbar sein, aber die Frage ist, wie Sie sie ausführen können.

Wenn Sie Zugriff auf die Bootloader-Eingabeaufforderung haben, können Sie möglicherweise mit starten init=/bin/static-sh, wobei static-sh ein Symlink zu ist busybox(überprüfen Sie, ob dies /bin/static-shvorhanden ist - auf meinem System, aber nicht auf Standard-Ubuntu. Dieser Fehler deutet darauf hin, dass es verfügbar ist .)

Sobald Sie eine Root-Shell haben, können Sie den /lib64Symlink neu erstellen . Möglicherweise müssen Sie zuerst das Root-Dateisystem als Lese- / Schreibzugriff erneut bereitstellen. In Besetztbox sollten diese Tools integriert sein, die Sie wie folgt ausführen können:

# busybox mount -o remount,rw /
# busybox ln -s /lib /lib64
# /bin/bash
bash# 

Wenn Bash funktioniert, sollte das Problem behoben sein.


18

Wenn Sie Dateien aus der aktuellen Installation wiederherstellen müssen, bitten Sie Ihren Host, Ihnen zu helfen. Angenommen, es handelt sich um eine VM, dauert es ungefähr fünf Minuten, um ein Image Ihrer Festplatte zu erstellen, Ihren Host von Grund auf neu zu installieren und das alte Disk-Image in Ihrem neuen Dateisystem abzulegen.

Wenn Sie nichts benötigen, lassen Sie sie einfach neu installieren. Fast immer die schnellere Option, wenn Sie Dinge hart knochen.


2
Stimmen Sie überein. Wenn sie ein einigermaßen kompetenter VM-Hosting-Service sind, sollten sie dies tun können. Wenden Sie sich so schnell wie möglich an sie, um sicherzustellen, dass sie noch ein Backup vor dem Fehler haben.
Shadur

2

Wenn Sie gerade den Symlink / lib64 zu / lib gelöscht haben und die Konsole noch geöffnet ist, gehen Sie einfach wie folgt vor:

/lib/ld-linux-x86-64.so.2 /bin/ln -s /lib /lib64

und Sie sollten in der Lage sein, Befehle wieder normal auszuführen. Passen Sie den Pfad zu Ihrer tatsächlichen ld-Bibliothek an. Sie können auch einen beliebigen anderen Befehl ausführen, indem Sie ihm den vollständigen Pfad der ld-Bibliothek voranstellen.


1

Ohne Zugriff auf den physischen Server können Sie nicht viel tun.


Sollte ich dann nach einem Format fragen oder gibt es eine Möglichkeit, diese Dateien wiederherzustellen, ohne alles andere zu peitschen?
Ameise

Sie vergessen, dass es eine hohe Wahrscheinlichkeit gibt, dass dies ein virtueller Server ist. In diesem Fall bedeutet "physischer Server" nicht viel, außer Zugriff auf Remote-Tools höherer Ebene.
Caleb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.