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. Untuk apa persamaannya rm
dan apakah ada cara untuk membatalkan rm
perintah?
command-line
rm
trash
boehj
sumber
sumber
Jawaban:
Tidak ada tempat, hilang, lenyap. Nah, lebih khusus lagi, 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
, tidak seharusnya ada. Jika Anda membutuhkan tempat sampah, Anda harus menggunakan antarmuka tingkat yang lebih tinggi. Ada utilitas baris perintah ditrash-cli
dalam Ubuntu, tetapi sebagian besar waktu file manager 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. Therm
perintah pada UNIX / Linux sebanding dengandel
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) memutuskan tautan file asli. Anda tidak ingin Sampah Anda diisi dengan salinan tambahan ini.sumber
libtrash
untuk mengubah perilaku rm. Banyak skrip digunakanrm
untuk membersihkan file dan Anda tidak ingin yang muncul di Sampah. Saya merekomendasikan menggunakan perintah khusus sepertitrash
daritrash-cli
paket. @pedro Saya harus menambahkan bahwa saya pernah membuat file * di direktori home saya. Saya tidak sengaja mengutip * ketika saya tidak seharusnya membuatnya jadi saya memutuskan untuk menghapusnya dengan rm * secara alami. Ketika saya menyadari apa yang saya lakukan, saya dengan cepat membunuh perintah, tetapi sudah menghapus sejumlah file di direktori rumah saya.cp
, danmv
, kecp -i
danmv -i
ketika dijalankan sebagai root. Ini mengubah perilaku default sehingga perintah-perintah itu akan selalu bertanya sebelum menimpa file yang ada. Beberapa sysadmin merekomendasikan untuk secara khusus menghapus alias tersebut sehingga Anda tidak mengharapkan perilaku yang mungkin berakhir mematikan ketika di sistem lain yang mengikuti perilaku default.Untuk ext3 / ext4, Anda dapat mencoba memulihkan file menggunakan alat seperti extundelete atau ext3grep , atau bahkan bermain - main 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 ada di jurnal, dan bahwa blok belum ditimpa).
Jadi, untuk semua maksud dan tujuan, file yang dihapus
rm
sudah tidak ada - Anda bisa mencoba necromancy seperti yang ditawarkan alat ini, tetapi jangan 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 ...).sumber
Mengenai membatalkan efek dari
rm
:Karena sebagian besar sistem file hanya menghapus referensi ke data dan menunjukkan bahwa blok-blok itu gratis, 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, yang Anda miliki
root
pada sistem dan saya kira menyatukan apa pun yang mencakup lebih dari satu blok sistem file (mungkin 4k) mungkin berakhir sangat melelahkan jika sistem file tidak mengelola untuk meletakkan file di 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 yang besar (-C
). (Dan tak lama setelah kejadian itu, perusahaan memutuskan untuk menghabiskan beberapa sumber daya untuk mengimplementasikan cadangan)sumber
magicrescue
itu yang mencoba untuk menemukan gambar atau suara dengan pola khas mereka.Setiap kali Anda menghapus file menggunakan
rm
perintah, data file tidak pernah dihapus. Dengan kata lain blok dalam sistem file yang berisi data masih ada.Apa yang terjadi adalah ketika Anda menjalankan
rm
perintah, sistem menandai inode milik file itu sebagai tidak terpakai dan blok data file itu juga tidak digunakan (tetapi tidak dihapuskan). Namunext3
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 , Cara kerja penghapusan file
sumber
chattr +s
atribut ("rusak"). Ini memberitahu filesystem untuk secara spesifik menimpa file ini dengan nol pada penghapusan. Hanya beberapa filesystem yang akan mendukung atribut itu.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 jumlahnya besar. Jadi ketika Anda membuat file, Anda juga membuat hardlink pertamanya: 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" suatu file, biasanya Anda sebenarnya hanya menghapus hardlink yang ada di tempat yang Anda tentukan. Inilah sebabnya mengapa panggilan sistem untuk menghapus file disebut
unlink()
. Sistem tidak akan benar-benar 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 tersebut ada di mana pun hardlink yang tidak Anda hapus. Jika tidak ada hardlink yang tersisa, file-file tersebut hilang.
sumber
Lihat juga ~ / .snapshot jika file tersebut baru saja dihapus.
sumber