it-swarm-id.com

Di mana file pergi ketika perintah rm dikeluarkan?

Baru-baru ini saya tidak sengaja melakukan rm pada satu set file dan itu membuat saya berpikir di mana tepatnya file-file ini berakhir?

Dengan kata lain, ketika bekerja dengan GUI, file yang dihapus pergi ke Sampah. Apa yang setara dengan rm dan apakah ada cara untuk membatalkan perintah rm?

108
boehj

Tidak ada tempat, hilang, lenyap. Nah, lebih khusus, file tersebut akan dibatalkan tautannya. Data masih duduk di sana di disk, tetapi tautan ke sana dihapus. Dulu dimungkinkan untuk mengambil data, tetapi saat ini metadata dihapus dan tidak ada yang dapat dipulihkan.

Tidak ada tempat sampah untuk rm, juga seharusnya tidak ada. Jika Anda membutuhkan tempat sampah, Anda harus menggunakan antarmuka tingkat yang lebih tinggi. Ada utilitas baris perintah di trash-cli di Ubuntu, tetapi sebagian besar manajer file GUI seperti Nautilus atau Dolphin digunakan untuk menyediakan Trash can standar. Tempat sampah adalah standar itu sendiri. File yang dibuang di Dolphin akan terlihat di Sampah dari Nautilus.

File biasanya dipindahkan ke suatu tempat seperti ~/.local/share/Trash/files/ saat dibuang. Perintah rm pada UNIX/Linux dapat dibandingkan dengan del pada DOS/Windows yang juga menghapus dan tidak tidak memindahkan file ke Recycle Bin. Hal lain yang perlu disadari adalah bahwa memindahkan file di seluruh sistem file seperti ke disk USB Anda dari hard disk drive Anda benar-benar 1) salinan data file diikuti oleh 2) memutus tautan file asli. Anda tidak ingin Sampah Anda diisi dengan salinan tambahan ini.

126
penguin359

Untuk ext3/ext4, Anda dapat mencoba memulihkan file menggunakan alat seperti extundelete atau ext3grep , atau bahkan pergi mengacaukan dengan struktur tingkat rendah - secara manual (bukan untuk yang lemah hati); untuk banyak sistem file, Anda dapat mencoba mencari blok yang belum ditimpa oleh pola tertentu (mis. magicrescue dapat mencari header JPEG, di antara hal-hal lain). Perhatikan bahwa ini menggunakan heuristik untuk memulihkan file dari metadata yang tertinggal, sehingga pemulihan penuh tidak dijamin - ini lebih merupakan taruhan peluang terakhir (karena mengharuskan beberapa jejak file tetap dalam jurnal, dan bahwa blok belum ditimpa).

Jadi, untuk semua maksud dan tujuan, file yang dihapus dengan rm hilang - Anda dapat mencoba necromancy seperti yang ditawarkan alat ini, tetapi tidak bergantung padanya: ini adalah alat untuk mencoba ketika semuanya gagal. Lebih baik Gali cadangan terbaru Anda (Anda telah membuat cadangan, bukan? Oh well, hidup dan pelajari ...).

Mengenai membatalkan efek rm:

Karena sebagian besar sistem file hanya menghapus referensi ke data dan menunjukkan bahwa blok-blok itu bebas, Anda dapat mencoba mencari lokasi pembacaan data Anda langsung dari perangkat. Dengan sedikit keberuntungan, blok yang berisi file Anda belum diklaim untuk hal lain.

Ini mengasumsikan Anda memiliki sesuatu yang cukup unik untuk dicari, bahwa Anda memiliki root pada sistem dan saya menduga menyatukan segala sesuatu yang membentang lebih dari satu blok sistem file (mungkin 4k) mungkin berakhir sangat melelahkan jika sistem file tidak berhasil menempatkan file dalam blok yang berdekatan.

Saya telah berhasil memulihkan isi beberapa file teks biasa dengan menjalankan string pada perangkat sistem file itu, dan menggunakan grep mencari sesuatu dari file-file dengan konteks besar (-C). (Dan tak lama setelah kejadian itu, perusahaan memutuskan untuk menghabiskan beberapa sumber daya untuk mengimplementasikan cadangan)

8

Setiap kali Anda menghapus file menggunakan perintah rm, data file tidak pernah dihapus. Dengan kata lain blok dalam sistem file yang berisi data masih ada.

Apa yang terjadi adalah ketika Anda menjalankan perintah rm, sistem menandai inode yang dimiliki oleh file tersebut sebagai tidak terpakai dan blok data dari file itu juga tidak digunakan (tetapi tidak dihapuskan). Namun ext3 nol sebagian besar bidang dalam inode, ketika file dihapus.

Penandaan normal yang tidak digunakan ini dilakukan untuk kecepatan ... Jika tidak, penghapusan akan memakan waktu lebih lama. Itu sebabnya Anda mungkin mencatat menghapus bahkan file besar lebih cepat (Anda dapat memulihkan data jika blok data tidak ditimpa).

Info Lebih Lanjut: Struktur Inode , Bagaimana cara penghapusan file

6
sarath

Dalam sistem file Unix-style (termasuk di Linux), file tidak benar-benar "di" tempat tertentu. Alih-alih, sistem menggunakan hardlink untuk menunjukkan kepingan-kepingan apa yang menjadi gumpalan data yang besar. Jadi ketika Anda membuat file, Anda juga membuat hardlink pertama: yang benar-benar berada di tempat Anda "menyimpan" file tersebut. Jika Anda membuat lebih banyak hardlink, maka sejauh yang diketahui sistem, file tersebut sebenarnya ada di beberapa tempat sekaligus.

Ketika Anda "menghapus" file, biasanya Anda sebenarnya hanya menghapus hardlink yang ada di tempat yang Anda tentukan. Inilah sebabnya mengapa pemanggilan sistem untuk menghapus file disebut unlink(). Sistem sebenarnya tidak akan menghapus file sampai tidak ada hardlink yang tersisa. Tetapi begitu hardlink terakhir dimusnahkan, begitu pula datanya.

Jadi, ke mana file yang Anda hapus pergi? Jika masih ada hardlink, file itu ada di mana pun hardlink yang tidak Anda hapus. Jika tidak ada hardlink yang tersisa, file-file tersebut hilang.

3
The Spooniest

Lihat juga ~/.snapshot jika file baru-baru ini dihapus.

0
Andy