GNU/Linux >> Belajar Linux >  >> Linux

Memindahkan tempat sampah dan folder lain! Bagaimana cara mendapatkannya kembali?

Jika Anda masih memiliki shell root, Anda mungkin memiliki kesempatan untuk memperbaiki sistem Anda. Katakanlah Anda memindahkan semua direktori umum (/bin , /etc , /lib , /sbin , /usr — inilah yang dapat mempersulit pemulihan) di bawah /oops .

Anda tidak akan dapat mengeluarkan mv perintah secara langsung, bahkan jika Anda menentukan path lengkap /oops/bin/mv . Itu karena mv terhubung secara dinamis; karena Anda telah memindahkan /lib direktori, mv tidak dapat dijalankan karena tidak dapat menemukan pustaka yang merupakan bagian dari kodenya. Bahkan, lebih buruk dari itu:mv tidak dapat menemukan pemuat dinamis /lib/ld-linux.so.2 (nama dapat bervariasi tergantung pada arsitektur dan varian unix Anda, dan direktori dapat berupa nama yang berbeda seperti /lib32 atau /lib64 ). Oleh karena itu, sampai Anda memindahkan /lib direktori kembali, Anda perlu memanggil linker secara eksplisit, dan Anda perlu menentukan jalur ke perpustakaan yang dipindahkan. Inilah perintah yang diuji pada Debian squeeze i386.

export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /

Anda mungkin perlu menyesuaikan ini sedikit untuk distribusi atau arsitektur lainnya. Misalnya, untuk CentOS di x86_64:

export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /

Saat Anda mengacaukan sesuatu /lib , ada baiknya memiliki kotak alat yang terhubung secara statis. Beberapa distribusi (saya tidak tahu tentang CentOS) menyediakan salinan Busybox yang terhubung secara statis. Ada juga selempang, shell mandiri dengan banyak perintah bawaan. Jika Anda memiliki salah satunya, Anda dapat melakukan pemulihan dari sana. Jika Anda belum menginstalnya sebelumnya, sudah terlambat.

# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit

Jika Anda tidak memiliki shell root lagi, tetapi Anda masih memiliki daemon SSH yang mendengarkan dan Anda dapat masuk secara langsung sebagai root melalui ssh, dan Anda memiliki salah satu dari kotak alat yang terhubung secara statis ini, Anda mungkin dapat melakukan ssh. Ini dapat berfungsi jika Anda telah memindahkan /lib dan /bin , tetapi bukan /etc .

ssh [email protected] /oops/bin/sash
[email protected]'s password:
Stand-alone shell (version 3.7)
> -mv /oops/* /

Beberapa administrator menyiapkan akun alternatif dengan shell yang ditautkan secara statis, atau membuat akun root menggunakan shell yang ditautkan secara statis, hanya untuk masalah seperti ini.

Jika Anda tidak memiliki shell root dan belum mengambil tindakan pencegahan, Anda harus melakukan booting dari live CD/USB Linux (apa pun akan dilakukan asalkan cukup baru untuk dapat mengakses disk dan sistem file Anda) dan memindahkan file kembali.


Anda mungkin dapat memulihkan tanpa me-reboot, jadi jangan reboot sampai Anda mencoba beberapa hal lain karena tidak akan bisa boot. Jika sesi SSH Anda masih terbuka, coba ini:

  • Di mana program dijalankan diatur menggunakan variabel $PATH. Anda dapat menambahkan lokasi bin baru Anda ke path dengan menjalankan export PATH="$PATH:/newpath/to/bin:/newpath/to/usr/bin" . Anda mungkin perlu menambahkan sbin yang sesuai direktori juga. Anda juga dapat menjalankan program secara manual melalui jalur lengkapnya /path/to/mv [from] [to] misalnya harus berfungsi meskipun mv berada di lokasi yang berbeda. Bagian yang sulit adalah sebagian besar perintah ingin mengakses perpustakaan umum dan Anda mengatakan /lib dipindahkan jadi Anda perlu mengatur variabel untuk tempat itu juga. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/newpath/to/lib/:/newpath/to/usr/lib

  • Setelah Anda dapat menjalankan beberapa perintah dasar, pindahkan kembali barang-barang itu! mv /path/to/subfolder/* / akan teratur! Setelah semuanya kembali ke tempatnya, sistem akan berperilaku normal.

Jika gagal, mem-boot LiveCD APA PUN dan memasang drive akan memungkinkan Anda untuk memindahkan folder kembali ke tempatnya semula. Anda tidak perlu menginstal ulang atau bahkan menggunakan livecd distro Anda, Anda hanya perlu memasang drive dan memindahkan folder kembali ke lokasi yang tepat di disk. Banyak rescue disk berbasis linux yang berspesialisasi dalam memberi Anda hanya beberapa alat konsol dasar untuk melakukan perbaikan semacam ini.


Anda harus dapat me-reboot komputer dengan CD instalasi dalam mode pengguna tunggal, me-mount sistem file root dan memindahkan file kembali ke Linux. Saya tidak tahu banyak centos, tapi ini seperti RHEL, jadi ini akan berhasil.


Linux
  1. Bagaimana menemukan Versi Ubuntu, Nama Kode dan Arsitektur OS di Shell Script

  2. `^m` Dan Bagaimana Cara Menghilangkannya?

  3. Bagaimana Cara Mendapatkan Alamat Ip Sendiri Dan Menyimpannya Ke Variabel Dalam Script Shell?

  1. Centos – Memindahkan Bin Dan Folder Lainnya! Bagaimana Mendapatkan Mereka Kembali?

  2. Bagaimana cara membalikkan-i-mencari bolak-balik?

  3. Bagaimana cara mendapatkan pid dari suatu proses dan mengaktifkan kill -9 di skrip Shell?

  1. Cara mendapatkan semua file yang melebihi ukuran tertentu dan menghapusnya

  2. Bagaimana cara mendapatkan PYTHONPATH di shell?

  3. Kapan saya harus menggunakan #!/bin/bash dan kapan #!/bin/sh?