ルートディレクトリの移動を再帰的に元に戻す


14

サーバーとして使用するUbuntuデスクトップがあります。今朝、誤ってルートをすべてに移動しました../

 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

sshでリモート接続されました。今、私はもうアクセスできません。Webminも表示できません。

だから、今私は正しいシステムを再起動できませんか?そして、システムコンソールに物理的にアクセスし、次のコマンドを入力する必要があります。

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

正しい?

ルートディレクトリはどこに行き、どのように戻すことができますか?上記のコマンドは機能しますか?


10
うわー!それは印象的な間違いです!:(
Sparhawk

3
当時の作業ディレクトリがあったことを正しく理解してい/ますか?もしそうなら、私が試してみるとmv tempdir/ ../mv: ‘tempdir/’ and ‘../tempdir’ are the same file何も動かずにが得られます。
スパラフーク

次回は、rootとしてログインしないでください。そしてmv-iスイッチを追加する場合。
Braiam

1
同意しません。時々、すべてのコマンドの前に「sudo」を無意識に配置することを学ぶのではなく、ルートとしてログインしたいことがあります。ただし、ルートとしてログインする場合は注意してください。特に削除および移動コマンドで。---それでも、エラーは発生します。私たちはそれらから学びます。@MaxDL:バックアップから/パーティションを復元できますか?バックアップはありますか?Dell DRAC、HP ILO、またはその他のリモートアクセスツールを使用して、OSを起動せずにサーバーコンソールにアクセスできますか?
ヘネス

回答:


12

ルートディレクトリを移動していない(できない)ため、ルートのほとんどすべてを、どのパスの親ディレクトリにも移動しました。

物事を複雑にするmvために、移動したので、期待どおりに動作しません。最後のmvを起動したときと同じディレクトリにいる場合は、次のように動作します(これを要求してから再起動しない限り)。

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

これらのいずれも持っていない場合は、コマンドからそれらを省略します。

また、アクセス権がない場合(この状態にある間は新しいログインができません)、ファイルシステムを外部にマウントする必要があります(LiveCDなどを使用してファイルシステムをマウントしてから、ファイルを移動します) Braiamの答えはこの部分に役立つはずです。


私を混乱させたのはroot@server:/# ls、現在のディレクトリが/。(したがって、上記の2番目のコメント。)
Sparhawk

申し訳ありませんが、これは完全なコマンドです:root @ server:/ tmp / UPS / up / upsilon#mv / * ../ sshでリモート接続されました。今、私はもうアクセスできません。
MaxDL

その後、修正するコマンドは/tmp/UPS/up/bin/mv /tmp/UPS/up/{bin,boot,etc,home,media,mnt,opt,root,sbin,selinux,usr,var,vmlinuz*} /
Sparhawk

10

すでにリブートしたか、ログアウトした場合は、liveCD / USBで起動してシステムを修正できます。Liveシステムを作成し、Ubuntuで起動する方法を知っている部分は省略します(代替cdも機能し、ルートシェルにドロップするだけです)。

まず、システムをどこかにマウントする必要があります。

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

/dev/sda1あなたのルートだと思います。分離した/bin場合、または/usrマウントする必要がある場合:

mount /dev/sda2 /mnt/system/usr

これで、大惨事の前にいたディレクトリに到着するはずです。

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

次に、Oliが与えたコマンドを使用して、それをblatancyでコピーします。

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

次に、すべてが順調であることを確認します。

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

システムを再起動し、将来的には注意してください


1

私はこの問題を抱えていましたが、次のようにmvコマンドを呼び出す必要があることがわかりました。

/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} /

これが他の人に役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.