Verschieben des Stammverzeichnisses rekursiv wiederherstellen

14

Ich habe einen Ubuntu Desktop als Server. An diesem Morgen habe ich versehentlich alle meine Wurzeln verschoben../

 root@server:/tmp/UPS/up/upsilon# mv /* ../
 mv: impossibile spostare "/dev" in "../dev": Dispositivo o risorsa occupata
 mv: impossibile spostare "/proc" in "../proc": Dispositivo o risorsa occupata
 mv: impossibile spostare "/run" in "../run": Dispositivo o risorsa occupata
 mv: impossibile spostare "/sys" in "../sys": Dispositivo o risorsa occupata
 mv: impossibile spostare "/tmp" in una sottodirectory di sé stessa, "../tmp"
 root@server:/tmp/UPS/up/upsilon# ls
 -bash: /bin/ls: No such file or directory

Ich war in SSH aus der Ferne verbunden. Jetzt kann ich nicht mehr zugreifen. Ich kann Webmin auch nicht anzeigen.

Also, jetzt kann ich das System nicht richtig neu starten? Und ich muss physisch auf die Systemkonsole zugreifen und diesen Befehl eingeben:

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*}

richtig?

Wo ist mein Stammverzeichnis hingegangen und wie kann ich es zurückbekommen? Funktioniert der obige Befehl?

MaxDL
quelle
10
Beeindruckend! Das ist ein beeindruckender Fehler! :(
Sparhawk
3
Verstehe ich richtig, dass das Arbeitsverzeichnis zu der Zeit war /? Wenn ja, wenn ich es versuche mv tempdir/ ../, bekomme ich mv: ‘tempdir/’ and ‘../tempdir’ are the same filemit, nichts bewegt.
Sparhawk
Melden Sie sich das nächste Mal nicht als root an. Und wenn Sie wollen, mvfügen Sie den -iSchalter hinzu.
Braiam
1
Ich stimme dir nicht zu. Manchmal möchten Sie sich lieber als root anmelden, als sinnlos 'sudo' vor jeden Befehl zu stellen. Seien Sie jedoch vorsichtig, wenn Sie als root angemeldet sind. Besonders bei Lösch- und Verschiebebefehlen. --- Trotzdem passieren Fehler und wir lernen daraus. @MaxDL: Können Sie die / Partition aus einer Sicherung wiederherstellen? Haben Sie Backups? Können Sie einen Dell DRAC, ein HP ILO oder ein anderes Remotezugriffstool verwenden, um auf die Serverkonsole zuzugreifen, ohne das Betriebssystem zu starten?
Hennes

Antworten:

12

Sie haben das Stammverzeichnis nicht verschoben (Sie können es nicht), Sie haben nur fast alles in das übergeordnete Verzeichnis des Pfads verschoben, auf dem Sie sich befanden.

Um die Sache zu verkomplizieren, sind Sie auch umgezogen, mvdamit das nicht wie erwartet funktioniert. Das Folgende sollte funktionieren (solange Sie nicht neu gestartet haben, seit Sie dies gefragt haben!), Wenn Sie sich noch in demselben Verzeichnis befinden, in dem Sie sich befanden, als Sie Ihre letzte MV abgeschossen haben.

../bin/mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /

Wenn Sie keine davon haben, lassen Sie sie einfach aus dem Befehl aus.

Und wenn Sie keinen Zugriff haben (Sie können sich in diesem Zustand nicht neu anmelden), müssen Sie das Dateisystem extern mounten (z. B. über LiveCD, das Dateisystem mounten und die Dateien dann verschieben Braiams Antwort sollte dabei helfen.

Oli
quelle
Was mich verwirrte, war die Leitung root@server:/# ls, die mir vorschlug, das aktuelle Telefonbuch zu führen /. (Daher mein zweiter Kommentar oben.)
Sparhawk
Sorry, das ist der komplette Befehl: root @ server: / tmp / UPS / up / upsilon # mv / * ../ Ich war in ssh remote verbunden. Jetzt kann ich nicht mehr zugreifen.
MaxDL
Dann ist der Befehl zu beheben/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk
10

Wenn Sie bereits neu gestartet oder abgemeldet wurden, können Sie von einer Live-CD / USB booten, um Ihr System zu reparieren. Ich werde den Teil weglassen, in dem Sie wissen, wie man ein Live-System erstellt und mit Ubuntu bootet (die alternative CD funktioniert auch, werfen Sie einfach in eine Root-Shell):

Zuerst sollten Sie Ihr System irgendwo anbringen, also:

mkdir /mnt/system
mount /dev/sda1 /mnt/system

Ich nehme an, es /dev/sda1ist deine Wurzel. Wenn Sie sich getrennt haben /binoder /usrSie sollten sie auch montieren:

mount /dev/sda2 /mnt/system/usr

Nun sollten Sie zu dem Verzeichnis gelangen, in dem Sie sich vor der Katastrophe befanden:

cd /mnt/system/tmp/UPS/up/upsilon

Nun mit dem Befehl, den Oli gegeben hat und den ich unverblümt kopieren werde:

mv ../{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /mnt/system/

Überprüfen Sie nun, ob alles in Ordnung ist:

# ls /mnt/system/
bin boot etc home media mnt opt root sbin selinux usr var etc...

Starten Sie Ihr System neu und seien Sie in Zukunft vorsichtiger.

Braiam
quelle
1

Ich hatte dieses Problem und musste den Befehl mv folgendermaßen aufrufen:

/tmp/UPS/up/lib/ld-linux-x86-64.so.2 --library-path /tmp/UPS/up/lib/ /tmp/UPS/up/test/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var} /

Hoffe das hilft anderen.

Johny
quelle