Jawaban:
Linux (seperti halnya perangkat lain) tidak secara asli menyediakan fitur undo. Filsafatnya adalah jika hilang, hilang. Jika itu penting, itu seharusnya didukung.
Ada sistem file sekering yang secara otomatis menyimpan salinan versi lama: copyfs , tersedia di semua distribusi yang baik. Tentu saja, itu bisa menggunakan banyak sumber daya.
Cara terbaik untuk melindungi dari kecelakaan semacam itu adalah dengan menggunakan sistem kontrol versi (cvs, bazaar, darcs, git, lincah, subversi, ...). Butuh sedikit waktu untuk belajar, tetapi terbayar luar biasa dalam jangka menengah dan panjang.
Sayangnya tidak ada.
-i
opsi rm
aktif diaktifkan secara default. Sistem Unix saya seharusnya tidak memegang tangan saya.
Tidak ada pembatalan ajaib di Unix mana pun. Unix berasumsi bahwa Anda tahu apa yang Anda lakukan. Untuk Undo support gunakan VCS (editor teks Anda mungkin juga memilikinya).
Sebagian besar filesystem tidak memiliki kemampuan untuk melakukannya secara transparan.
Mesin waktu dan pengembalian sistem di mac dan windows masing-masing hanyalah sistem kontrol cadangan / perubahan.
Tidak ada undo di baris perintah. Namun Anda dapat, menjalankan perintah sebagai rm -i
dan mv -i
. Ini akan meminta Anda dengan "Anda yakin?" pertanyaan sebelum mereka menjalankan perintah.
Dimungkinkan juga untuk menambahkan alias untuk itu ke skrip startup (misalnya ~/.bashrc
atau /etc/bash.bashrc
):
alias remove='rm -i'
alias move='mv -i'
Sunting: dengan saran di bawah, saya telah menghapus saran saya ke alias perintah default. Sebaliknya, itu memperkenalkan perintah baru sekarang).
mv -i
meminta hanya ketika itu akan menimpa file (yang membuatnya berguna dan tidak menjengkelkan). Dengan nada yang sama alias cp='cp -i'
,.
Alasan mengapa sistem Linux / Unix tidak memiliki pembatalan penghapusan berasal dari cara kebanyakan filesystem menyimpan informasi mereka. Semua informasi meta file disimpan di depan disk dengan referensi ke inode pada disk lainnya. Biasanya, sebagian besar sistem file mengalokasikan 10 blok ke file di area meta ini. 7 pertama merujuk ke 7 inode pertama. Yang ke-8 dan ke-9 pergi ke daftar inode (blok yang dobel-kaitkan) dan yang ke-10 pergi ke daftar daftar (blok-blok yang terhubung tripply). Ini bervariasi dari sistem file ke sistem file (ext4, jfs, xfs, dll.) Tetapi daftar blok ini biasanya dapat mengatasi ukuran file di mana saja dari 2GB hingga beberapa TB.
Tetapi karena semua informasi ini disimpan di bagian depan disk, ketika file dihapus, tidak ada cara untuk merujuk inode pada disk ke meta-data yang mereka gunakan. Sebaliknya FAT32 dan NTFS sebenarnya menyimpan beberapa informasi header dengan file-file itu sendiri sehingga lebih mudah untuk mengidentifikasi file apa yang digunakan oleh set blok (selama ruang itu belum direklamasi oleh file yang lebih baru). Dalam pekerjaan Linux, ketika Anda menghapus sesuatu, hampir selalu hal pertama yang segera ditimpa oleh data baru untuk efisiensi.
Jika Anda benar-benar menginginkan fitur undo, gunakan kontrol sumber. Subversi sebenarnya bekerja dengan sangat baik pada mesin pengguna tunggal. Saya menggunakannya untuk mengontrol semua file pribadi saya di sistem rumah saya. Sepertinya berlebihan, sampai bencana, skrip nakal atau hit ketik perintah baris.
rm -r .
. ;)
rm -r project.git
. Untungnya jika Anda menyimpan versi lain di server jauh yang tidak mungkin terjadi
rm -r .
. Benar-benar bodoh dari saya.
Satu hal yang saya ingin tambahkan ke .bashrc saya adalah fungsi salin dan hapus. Sesuatu seperti:
cprm(){
cp -p $1 ~/deleted/$1
rm $1
}
Tapi Anda harus membiasakan mengetik cprm bukan rm.
Tentunya Anda harus tetap di atas area yang dihapus jika Anda memiliki ruang disk yang terbatas.
"$1"
.
GitFS adalah sistem file berbasis sekering, yang secara otomatis dihitung diff
antar versi dan memungkinkan pemulihan / penelusuran di seluruh versi.
Halaman web: https://www.presslabs.com/gitfs
Documents: https://www.presslabs.com/gitfs/docs/usage/