Secara tidak sengaja, saya menggunakan rm
file yang tidak ingin saya hapus. Apakah ada cara agar saya bisa mendapatkannya kembali di Linux?
Secara tidak sengaja, saya menggunakan rm
file yang tidak ingin saya hapus. Apakah ada cara agar saya bisa mendapatkannya kembali di Linux?
Jawaban:
Berikut ini adalah langkah-langkah umum untuk memulihkan file teks.
Pertama gunakan perintah dinding untuk memberi tahu pengguna bahwa sistem akan mati dalam mode pengguna tunggal:
# wall
System is going down to .... please save your work.
Tekan CTRL + D untuk mengirim pesan.
Selanjutnya gunakan perintah init 1 untuk membawa sistem ke mode pengguna tunggal:
# init 1
Menggunakan grep (cara UNIX tradisional) untuk memulihkan file
Gunakan sintaks grep berikut:
grep -b 'search-text' /dev/partition > file.txt
ATAU
grep -a -B[size before] -A[size after] 'text' /dev/[your_partition] > file.txt
Dimana,
-i : Ignore case distinctions in both the PATTERN and the input files i.e. match both uppercase and lowercase character.
-a : Process a binary file as if it were text
-B Print number lines/size of leading context before matching lines.
-A: Print number lines/size of trailing context after matching lines.
Untuk memulihkan file teks dimulai dengan kata "nixCraft" di / dev / sda1 Anda dapat mencoba perintah berikut:
# grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
Selanjutnya gunakan vi untuk melihat file.txt.
Metode ini HANYA berguna jika file yang dihapus adalah file teks. Jika Anda menggunakan sistem file ext2, cobalah perintah recover.
Ditemukan di http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
init 1
, bunuh secara manual setiap daemon sistem kecuali sshd
. Saya juga berpikir pada titik ini Anda harus me-remount semua RO filesystem dan menyimpan ke tmpfs (dengan asumsi file temp Anda akan cocok di ram) untuk menghindari menimpa file dengan data temp. Anda tentu saja harus menyalinnya di tempat lain nanti, baik ke server jarak jauh atau kembali ke sistem file lokal setelah remount mereka RW.
dd
dan cobalah untuk menemukan file di dalamnya (menggunakan grep
, atau editor).Sunting: terkadang ddrescue
bekerja lebih baik daripada dd
.
Satu-satunya jawaban yang benar adalah: pulihkan file Anda dari cadangan. Setiap orang harus memiliki cadangan. Untuk file yang sangat penting, Anda harus memiliki dua cadangan. Kamu tidak? Yah, sangat buruk, inilah pelajaran yang dipetik (Maaf kedengarannya kasar, tapi saya dalam penyimpanan data, dan orang-orang tidak membuat cadangan sampai mereka kehilangan beberapa data penting, itu fakta yang diberikan. Jadi ya, Anda terlihat bodoh, tetapi begitu juga hampir semua orang).
Oke, Anda tidak punya cadangan. Anda harus berhenti menggunakan sistem file yang berisi file SEKARANG . Setiap aktivitas penulisan pasti dapat menyemprot data file yang mungkin (hanya dapat ) tetap di disk.
jika Anda membuat kesalahan tragis untuk menggunakan hanya satu partisi sebagai sistem berkas root dan / home, itu berarti Anda harus mem - boot dari beberapa perangkat lain. SEKARANG .
Jika file Anda memiliki beberapa format umum (file Word, JPG, dll), gunakan Photorec . Photorec dapat mengambil format file yang paling umum.
Anda dapat mencoba metode "ext3 undelete" yang diusulkan sebelumnya, tetapi Anda harus merasa nyaman dengan baris perintah, memahami cara kerja dasar linux dasar, dll.
Jika file Anda memiliki beberapa format khusus, semoga beruntung. Saya pernah menulis program Perl untuk memindai drive untuk beberapa file khusus, dan itu bekerja dengan sangat baik; tetapi Anda harus mengetahui beberapa pemrograman untuk melakukan itu, dan cukup nyaman dengan linux juga.
Saya melakukan ini beberapa tahun yang lalu. Pendekatan saya adalah secara langsung, tidak ada waktu untuk kehilangan, unmount partisi dan kemudian
dd if=/dev/hda1 of=backup_image.ext3
untuk memiliki file cadangan dengan status partisi yang tepat. Kemudian Anda dapat memasang partisi lagi dan melanjutkan bisnis seperti biasa saat Anda mencari file yang dihapus di gambar yang Anda buat. Gambar mungkin akan SANGAT besar karena Anda membutuhkan semua ruang "kosong", jadi mungkin masalah praktis untuk menyimpannya.
Kemudian itu hanya untuk melakukan pencarian yang membosankan setelah potongan teks yang saya harapkan berada di suatu tempat di sup konten partisi. Misalnya untuk menemukan file .tex, saya berlari
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
yang mencetak konteks besar di sekitar frasa "ayat" dan menyimpan output ke file yang akan dicari secara manual. Saya mencetak konteks yang sangat besar karena butuh waktu lama untuk mencari gambar sehingga saya lebih suka tidak melakukannya lebih dari yang seharusnya.
Juga perintah strings
itu membantu dalam menghapus sampah biner dari output, tetapi jika saya ingat dengan benar itu juga menghapus semua baris baru, yang bisa menjadi masalah.
Untuk menemukan file biner dengan cara yang sama, orang mungkin berhasil menemukan header karakteristik atau sesuatu dari file tertentu, tetapi saya membayangkan itu menjadi petualangan yang agak besar.
Catatan teknis singkat: ada kesulitan teknis dengan pemulihan disk dan Ext3 / 4. Ini adalah hal yang panjang untuk dijelaskan, tetapi secara singkat (dan tidak memadai): Ext3 / 4 menghapus "markers" yang memberi tahu OS di mana file berada pada disk ketika Anda menghapusnya. File tidak digosok, tetapi tidak ada yang tahu di mana pada disk mereka mulai dan berakhir lagi, dan kadang-kadang bahkan terfragmentasi di beberapa tempat. Beberapa sistem file lain hanya mengatur status file menjadi "dihapus", tetapi simpan data lokasi. Maka batal hapus tidak lebih sulit daripada melihat file pointer dengan flag ini (mereka harus tetap tersedia jika tidak terlalu banyak aktivitas telah terjadi), dan kemudian berharap konten mereka belum ditimpa.
Apa yang terbaik Retorika, dalam pandangan saya. Pencadangan yang sering adalah jawaban untuk semua masalah ini. Data penting tanpa sistem cadangan otomatis adalah kecelakaan yang menunggu untuk terjadi, IMHO.
Anekdot pribadi yang wajib: Saya akan hapus foo\ foo*
dari ~
. saya menulis
rm -r foo<Tab>*
, yang sayangnya, karena foo
ternyata adalah symlink dan satu-satunya file yang cocok dengan ini, shell dibuat menjadi
rm -r foo\ foo *
Aku menekan Enter dan duduk di sana melihat perintah, yang seharusnya paling lama. Setelah agak lama rm
bertanya kepada saya apakah saya ingin "menghapus file yang dilindungi tulis 'sesuatu'". Cukup cepat saya merasakan kedinginan dan lembut dan sangat terkontrol saya menekan Ctrl+c
. ~ Setengah dari saya ~
telah dihapus, tetapi saya berhasil mendapatkan semuanya kembali melalui grepping yang dijelaskan di atas dan beberapa cadangan saat ini. Saya memiliki beberapa data pribadi yang sangat berharga (baca: menghabiskan waktu) dan sangat baru pada disk yang hilang, tetapi saya telah membuat cadangan empat kali lipat. Satu menghilang di sini, yang lain karena pemadaman sistem di sekolah, yang lain korup, dan pada awalnya saya tidak dapat menemukan yang keempat, karena saya secara tidak sengaja memasukkannya ke folder yang salah :-D. Belumrm -r
macet pada file yang dilindungi tulis, yang keempat akan dimakan sejak folder itu dipasang melalui sshfs di file saya ~
. Saya jauh lebih berhati-hati tentang hal-hal semacam itu sejak itu.
Jika standar rm , saya harap Anda memiliki cadangan. Prosedur untuk memulihkan file yang dihapus akan berbeda untuk setiap sistem file, jika dapat dilakukan sama sekali. Linux tidak memiliki "tempat sampah" bawaan; setelah Anda menghapus file, semuanya sudah hilang.
Apa pun cara Anda melakukannya, Anda ingin mencabut komputer - sesegera mungkin, terus menjalankan komputer (bahkan untuk mematikannya) menyebabkan menulis ke disk dan meningkatkan kemungkinan bahwa beberapa blok sebelumnya ditempati oleh file akan ditimpa. Setelah Anda selesai melakukannya, letakkan di komputer lain, reboot dari live CD (pastikan untuk tidak memasang drive kecuali Anda memasangnya hanya-baca), atau lepaskan hard drive dan bawa ke spesialis pemulihan data.
Tetapkan harapan Anda rendah. Jika ada sesuatu yang ditulis di atas data yang 'dihapus', Anda akan kehilangannya.
Saya telah melakukan sejumlah kecil pemulihan dan alat terbaik yang saya temukan sering dirancang untuk format tertentu. Misalnya 'photorec' sangat bagus ketika saya ingin memulihkan puluhan ribu jpeg.
Recuva juga telah membantu saya sebelumnya dan mungkin menjadi pilihan terbaik Anda. (Gratis, jangan sampai tertipu membayar dengan iklan mereka)
Pada akhirnya, jika apa yang Anda lewatkan itu penting, ambil drive secara offline dan berhentilah menulis. Gunakan setiap bagian dari perangkat lunak pemulihan yang dapat Anda temukan sampai Anda mendapatkan kembali data Anda atau berhenti menjadi berharga. Jika ini benar-benar penting, kirimkan ke profesional dengan harga tinggi.
Jika Anda pernah beruntung dengan alat sebelumnya, coba lagi terlihat seperti Anda terbiasa dengannya. Pada akhirnya, mereka tidak boleh menulis ke disk dan jadi Anda dapat menggunakan perangkat lunak sampai Anda menemukan yang berfungsi.
Ini dokumen yang bagus untuk Anda. Anda akan menemukan banyak tips praktis di sana.
BTW, ada dua kelompok orang:
Selamat, Anda baru saja mempromosikan diri Anda ke grup 2. ;-)
Jika Anda memiliki aplikasi terbuka yang sedang membaca file, seperti VLC atau LibreOffice, maka jawaban L & U yang hebat ini membantu saya keluar dari kekacauan ini. Berikut adalah metode alternatif untuk melakukan hal yang sama.
Gagasan umum adalah menemukan tautan /proc/PID/fd/DESCRIPTOR_NUMBER
dan menyalinnya kembali ke lokasi aslinya. Gunakan ps aux | grep APP_NAME
untuk menemukan PID dan kemudian ls -la /proc/PID/fd/
untuk menemukan DESCRIPTOR_NUMBER yang tepat.
Jawaban "benar" adalah dengan menganggap tidak ada metode untuk memulihkan andal, dan sebaliknya memulihkan dari cadangan atau sistem kloning atau menginstal ulang.
TestDisk adalah alat yang hebat, dan ada cara-cara lain untuk dapat menyelamatkan beberapa data dari drive fisik tergantung pada sistem file dan kemunculan penghapusan, tetapi waktu dan rasa sakit yang terlibat bisa terlalu besar, jadi JAUHKAN BACKUPS (dan juga uji bahwa mereka valid dan dapat dipulihkan)!
Jika tidak ditimpa oleh pengguna lain, maka Anda beruntung. Saya tidak sengaja menghapus file sumber cpp saya dan menggunakan alat yang disebut terdepan , yang membantu saya memulihkan puing-puing 60G cpp dari disk. Akhirnya, saya memulihkan file saya dengan merakit puing-puing itu sepotong demi sepotong. Saya pikir ini memindai pola tertentu untuk tipe file tertentu dan menelusuri semua inode pada disk untuk memulihkan file! Coba saja!
Jika secara tidak sengaja Anda telah menghapus file dari Linux maka Anda dapat menggunakan perintah ini:
find /root -name "search text" -type f -exec mv {} "/home" \;
sebagai gantinya search text
Anda dapat meletakkan nama file dan dapat menentukan direktori tempat Anda ingin mengembalikannya /home
.
Anda dapat mencoba skrip ini. Bekerja dengan baik dan dimaksudkan untuk digunakan sebagai ganti rm dan saya menggunakannya secara luas sekarang.
https://github.com/nateshmbhat/safe-rm
rm
Saya memiliki masalah yang sama minggu lalu dan saya mencoba banyak program, seperti debugfs, photorec, ext3grep dan extundelete. ext3grep adalah program terbaik untuk memulihkan file. Sintaksnya sangat mudah:
ext3grep image.img --restore-all
atau:
ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’
Acara video ini adalah tutorial mini yang dapat membantu Anda.
rm
adalah perintah UNIX / Linux "berbahaya" (baca$ man rm
). Gunakan dengan sangat hati-hati . Dengan itu, ini adalah cara cepat untuk menghapus file yang Anda yakini. Lingkungan Linux Modern dan Unix Desktop memang menyediakan solusi "Tempat Sampah" , sehingga pengguna dapat dengan mudah memulihkan file yang terhapus secara tidak sengaja.