Membatalkan perintah "rm -rf ~"?

115

Saya memiliki folder yang saya tidak ingin bernama '~', jadi dari baris perintah saya mengetik

rm -rf ~

dan secara tidak sengaja menghapus folder rumah saya (karena ~ diselesaikan ke / home / nama pengguna). Apakah ada jalan kembali atau pada dasarnya saya perlu membuat ulang akun dari awal?

Chris
sumber
18
Sistem file apa?
Tarnay Kálmán
6
Jelas kalian orang tidak punya selera humor.
Blomkvist
21
Meskipun ini tidak langsung menjawab pertanyaan Anda, rm -rf "~"dengan kutipan akan mencari nama literal itu alih-alih mengembangkannya. Tapi bagaimanapun saya akan takut untuk menggunakannya - saya akan menggunakan sesuatu seperti lsatau cdpertama untuk memverifikasi saya mendapatkan dir yang benar, atau menghapus folder dari file manager GUI. Mungkin pertama-tama ganti nama dir ( mv "~" tilde), verifikasi dan kemudian hapus.
Henrik N
2
Untuk masa depan, jangan gunakan rm secara interaktif di baris perintah. Gunakan utilitas seperti sampah dan Anda 1) tidak dapat membuat kesalahan yang sama lagi dan 2) tidak dapat terbiasa dengan alias shell miskin dari rm yang akan menyebabkan Anda kesulitan.
Fred Nurk
9
@HenrikN: ./~ bukannya "~" melakukan hal yang sama, tetapi juga bekerja dengan nama file bermasalah lainnya, seperti yang dimulai dengan tanda hubung dan terlihat seperti opsi.
Fred Nurk

Jawaban:

148

Secara umum tidak ada jalan kembali yang mudah.

Anda dapat memulihkan dari cadangan harian Anda.

RedGrittyBrick
sumber
194
Komentar Anda tentang cadangan kejam dan 100% to the point.
Benjamin Bannier
3
OS X set bar untuk bagaimana backup harus bekerja (terutama dengan Time Capsule). Lihat maketecheasier.com/... untuk saran cara mendapatkan hal yang sama dengan Ubuntu.
Thorbjørn Ravn Andersen
4
@ Thorbjørn Ravn Andersen - Ya, kecuali ketika Time Machine mengalami gangguan saraf. Saya punya mesin waktu membuat saya panik dua kali dalam enam bulan.
Nama Palsu
Pencadangan di luar kantor sangat bagus dan bisa sangat terjangkau. Saya menggunakan Backblaze (Mac / Windows) seharga $ 5 / komputer / bulan. Banyak orang tampaknya menyukai Crashplan (Mac / Windows / Linux).
Henrik N
23
setiap hari apa ????
Luc M
66

Yang lain (seperti @RiMMER , @ Adam , dan @James T ) telah disebutkan bahwa, untuk sebagian besar filesystem, mungkin untuk memulihkan sebagian besar atau semua data Anda (mungkin tanpa nama file), karena data tersebut tidak benar-benar memusatkan perhatian keluar, hanya dihapus dari file-table. Ini bukan hanya berlaku untuk Linux - hal yang sama berlaku untuk Windows dan Mac.

Namun, belum ada yang menyebutkan hal yang paling penting - MATIKAN KOMPUTER ANDA. SEKARANG. .

Banyak program - termasuk browser internet yang Anda gunakan saat ini - akan menyimpan data ke hard drive, dan hampir semua yang Anda lakukan dapat menyebabkan komputer Anda mengubah ukuran / menulis ke file swap. Kedua hal ini akan menulis ke sektor bebas di hard drive, berpotensi menimpa data berharga Anda.

Dengan demikian, matikan komputer Anda, lepaskan hard drive, dan letakkan di komputer lain. Pasang hard drive sebagai read-only, dan pulihkan file ke hard-drive yang terpisah. Ketika Anda telah memulihkan semua yang Anda inginkan - dan hanya kemudian - tulis file kembali ke drive asli.

BlueRaja - Danny Pflughoeft
sumber
11
Bahkan proses mematikan dapat menulis ke hard-drive. Saya ragu untuk segera merekomendasikan mencabut komputer Anda, karena itu pasti dapat membuat segalanya menjadi lebih buruk, tapi ... yah, tergantung pada seberapa penting data, Anda mungkin ingin mempertimbangkannya.
BlueRaja - Danny Pflughoeft
1
Bergantung pada titik drive / OS / mount, dimungkinkan untuk segera melepas dan / atau memasang kembali hidup yang baca tanpa mematikan pc, kemudian mematikan dll.
Matthew Scharley
1
killall rmbukannya mematikan.
Fred Nurk
1
Bergantung pada seberapa besar direktori home Anda dan seberapa besar hard drive Anda, kemungkinan penulisan berlebihan sektor bebas yang berisi data Anda cukup tipis.
Mike Speed
Anda dapat memulihkan file teks menggunakan metode ini tanpa banyak kesulitan (selama Anda memiliki gambaran kasar tentang apa yang ada di dalamnya), tetapi file biner sangat sulit sehingga pada dasarnya tidak mungkin.
Satanicpuppy
13

Saya percaya bahwa setiap pengguna linux pada satu titik waktu harus mempelajari pelajaran menyakitkan ini secara langsung sebelum benar-benar mempelajari pentingnya cadangan, serta memperhatikan detail dan berhati-hati.

Misalnya, jika Anda menghapus file yang tampak aneh, pertama-tama Anda dapat menjalankan perintah pada file aneh yang tidak memiliki efek samping dan yang tidak membuat perubahan pada data Anda. Misalnya, sudahkah Anda lari

cd ~

sebelum mencoba menghapus folder, Anda akan melihat bahwa itu akan mengubah direktori ke folder rumah Anda, bukan ~folder. Setelah Anda melalui langkah-langkah pemecahan masalah yang cukup untuk mempelajari perintah yang benar, Anda harus cdmasuk ke ~folder dengan benar , maka Anda dapat menekan tombol panah atas untuk menarik perintah terakhir dari histori dan kemudian mengubah cdke rmdan kemudian dan hanya kemudian mencoba untuk menghapus folder tersebut. .

Saya sarankan mengambil langkah-langkah seperti ini sebelum melakukan tindakan apa pun yang permanen. Ini tidak permanen atau sangat mudah, tetapi Anda memiliki peluang yang jauh lebih baik untuk mencegah momen oops tersebut jika Anda berhati-hati saat melakukan tindakan yang memiliki efek samping.

jmort253
sumber
4
Lihatlah sebelum Anda melompat, dan lssebelum Anda rm.
LawrenceC
7

Jika Anda menggunakan sistem file ext3, maka ext3grep adalah sahabat baru Anda. Tutorial yang bagus (di antara banyak lainnya) tentang penggunaan ext3grep dapat ditemukan di sini .

Adam Prax
sumber
6

Anda dapat mencoba menggunakan testdisk untuk membatalkan penghapusan file individual . Ini hanya berfungsi pada ext2 dan NTFS (tapi masih patut dicoba).

Jika Anda memiliki ext3 atau ext4, Anda dapat memulihkan file yang diketahui menggunakan photorec , yang mungkin akan memulihkan lebih dari yang Anda inginkan. Photorec memulihkan file tanpa informasi nama file sehingga bisa membosankan untuk menelusuri file.

James T
sumber
4

Jika Anda memiliki drive eksternal yang cukup besar, Anda memiliki pilihan lain yang mungkin paling aman. Anda akan membutuhkan ruang yang cukup untuk menyimpan seluruh partisi rumah termasuk ruang kosong.

Boot dari CD dan jangan pasang drive rumah sama sekali. Pasang drive eksternal. dd partisi drive rumah menjadi file di drive eksternal. me-mount file sebagai perangkat loopback melakukan pekerjaan penghapusan pada gambar ini, aman karena Anda tidak dapat merusak sistem file asli Anda. Tergantung pada sistem file mungkin ada banyak hal untuk dicoba, beberapa di antaranya berpotensi merusak.

Ini menyelamatkan saya sekali dengan versi beta Reiser4 ketika saya tidak tahu apa yang akan dilakukan bahkan jika saya memasangnya hanya membaca. Saya membaca di suatu tempat pada saat itu bahwa menulis jurnal masih mungkin.

Ini juga merupakan teknik yang baik untuk menyimpan data dari drive yang sekarat.

barrymac
sumber
1
+1 untuk menyebutkan bahwa pada sebagian besar FS yang dijurnal, bahkan tingkat yang dapat dibaca dapat menulis data sebagai bagian dari kegiatan jurnal.
sleske
2

Ada beberapa teknik untuk memulihkan file dengan memeriksa inode yang belum didaur ulang. Semakin banyak data yang Anda tulis ke sistem file setelah penghapusan, semakin kecil kemungkinan Anda memulihkan data. Strategi terbaik untuk pemulihan dari penghapusan data yang tidak disengaja adalah memulihkan dari cadangan.

Xenoaktif
sumber
2
alias rm="rm -i"

Dengan asumsi Anda menggunakan Bash shell (letakkan ini di file .bashrc Anda sehingga tetap ada pada shell baru yang Anda buka).

Ini akan menghasilkan rm meminta Anda untuk mengkonfirmasi apa yang ingin Anda hapus, yang bagus terutama ketika Anda melakukan -rf, tetapi juga akan memperluas '~' ke path lengkap ke direktori home Anda di prompt, yang seharusnya memberi Anda sebuah petunjuk Anda tidak menghapus file '~' tetapi sebenarnya homedir Anda.

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

Secara teknis ini bukan jawaban untuk pertanyaan Anda, tetapi mungkin membantu Anda menghindari masalah seperti itu di masa depan.

EDIT: Beberapa orang mungkin mencegah Anda menggunakan teknik ini karena membuat Anda kurang berhati-hati dengan perintah "rm". Dalam pengalaman saya ini jauh dari kebenaran. Pada kenyataannya, efek dari alias adalah untuk mencegah Anda menggunakan "rm -rf" - seperti yang Anda tahu itu akan menghasilkan banyak prompt yang tidak ingin Anda jawab - dan untuk mendapatkan "rm -rf" "Anda perlu secara sengaja menyebut perintah rm sebagai / bin / rm (atau apa pun). Ini mengarah pada penggunaan perintah "rm" yang lebih sadar dan disengaja secara umum - karena Anda selalu harus mendahului penggunaan rm dengan pilihan mental "rm atau / bin / rm" - di server Anda dan di tempat lain yang Anda temui untuk masuk. Dan dunia di mana semua orang berpikir sebelum menggunakan rm akan lebih aman!

aaa90210
sumber
2
Tergantung pada sistem yang Anda gunakan. Pada RHEL5 dan OS X 10.6 setidaknya, -fmengabaikan -iopsi.
Daniel Beck
Saya tidak tahu hal itu. Saya menambahkan saran saya dengan YMMV dan "jangan coba ini di rumah, atau mungkin lebih penting di tempat kerja"!
aaa90210
9
Jika Anda melakukan ini, suatu hari Anda tidak akan memiliki alias ini di tempat - mungkin Anda sedang duduk di komputer lain atau Anda ssh'd ke suatu tempat - dan Anda akan menggunakan rm yang digunakan untuk jaring pengaman. Anda akan melakukan sesuatu yang Anda sesali.
Fred Nurk
1
@FredNurk Persis. Taruhan terbaik adalah dengan menambahkan -i sendiri, atau tidak menggunakan opsi -f.
Arda Xi
Ketika saya memiliki banyak file untuk dihapus, saya mulai dengan rm -i my_list_of_files. Kemudian saya menggunakan CTRL-C dan memanggil kembali perintah saya untuk memodifikasinyarm -rvf my_list_of_files
Luc M
2

Saya minta maaf tentang data Anda. Semua orang telah menimpali cara menangani masalah data Anda, tetapi di sini ada beberapa informasi tentang cara Anda dapat menangani saat lain kali Anda melihat folder yang ditangguhkan ~.

  1. Temukan siapa pun yang membuatnya dan pastikan mereka tidak pernah melakukannya lagi.
  2. Jangan gunakan -rfatau argumen kuat gila mana pun untuk melakukan penghapusan. Alih-alih menganggapnya baik dan lambat dan pastikan Anda dapat melihat apa yang terjadi. Dimungkinkan untuk memasukkan tilde tanpa memperluas ke direktori home Anda dengan menghindarinya di shell. Secara teori Anda bisa rm -rI \~ , namun Anda bisa melangkah lebih jauh.
    1. Pertama, cd \~untuk masuk ke folder itu, bahkan mungkin digunakan pwduntuk memeriksa apakah Anda sudah sampai di sana. Sepuluh menghapus isinya saat Anda di sana. Sekali lagi hati-hati tetapi bersihkan folder dengan rf -rI *dan jika Anda perlu .*juga.
    2. Sekarang naik kembali dengan cd ..dan hapus direktori rmdir \~.
Caleb
sumber
1

Saya hanya cd .snapshot dan mengembalikan file. Tapi, saya melakukan ini di tempat kerja dan saya tidak tahu dari mana direktori .snapshot berasal. Saya pikir mungkin itu adalah fitur Linux.

meBigGuy
sumber
1

Alat Pemulihan - Baris Perintah:

Alat Pemulihan - Gui:

Informasi :

Dalam pengalaman pribadi saya, saya mendapatkan data saya kembali menggunakan "UFS Explorer" dan photorec

(1) = Tidak open source, tidak gratis

(2) = Tidak open source, gratis

(3) = Sumber terbuka dan gratis

(4) = Miliki dukungan ntfs

(5) = Memiliki fitur struktur direktori

intika
sumber
-3

rm selamanya.

Meskipun ini tidak membantu Anda sekarang, Anda di masa depan tidak dapat menggunakan rm atau untuk benar-benar memaksakan diri Anda sendiri, tambahkan skrip yang ditemukan sebelumnya di jalur Anda bernama rm yang memindahkan file ke folder tempat sampah yang Anda bersihkan beberapa waktu lalu (memungkinkan Anda membuat kesalahan dan tidak menjadi SOL).

Corey
sumber
7
Satu-satunya masalah dengan ini adalah Anda mungkin menjadi sedikit cepat dan longgar dengan perintah rm dan lupa bahwa Anda tidak memiliki fungsi hapus yang berguna pada server Linux perusahaan Anda ... oops ...
jmort253
2
-1 Ini memiliki masalah yang sama dengan jawaban yang terlalu banyak dipilih (jadi saya akan mencuri komentar orang lain): suatu hari tidak ada skrip ini di tempat - mungkin Anda sedang duduk di komputer lain atau Anda ssh'd ke suatu tempat - dan Anda akan menggunakan rm yang digunakan untuk jaring pengaman dan Anda akan melakukan sesuatu yang Anda sesali.
DMA57361
@Corey Walaupun saya setuju bahwa ini dapat menyebabkan kebiasaan buruk, +1 karena jawaban ini terlalu banyak diturunkan
John Militer