it-swarm-id.com

Apakah kita memiliki undo di Linux?

Saya mengganti nama beberapa file dalam satu skrip batch. Apakah ada cara untuk membatalkan perubahan tanpa harus mengganti nama kembali?

Apakah Linux menyediakan beberapa cara asli undoing?

55
Lazer

Linux (seperti Unix lain) tidak secara asli menyediakan fitur undo. Filsafatnya adalah jika hilang, hilang. Jika itu penting, itu seharusnya didukung.

Ada sistem file Fuse 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, Mercurial, Subversion, ...). Butuh sedikit waktu untuk belajar, tetapi terbayar luar biasa dalam jangka menengah dan panjang.

Sayangnya tidak ada.

17
postfuturist

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 pemulihan sistem di mac dan windows masing-masing hanyalah sistem kontrol cadangan/perubahan.

10
xenoterracide

Tidak ada membatalkan 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 (mis. ~/.bashrc atau /etc/bash.bashrc):

alias remove='rm -i'
alias move='mv -i'

Sunting: dengan saran di bawah ini, saya telah menghapus saran saya ke alias perintah default. Sebaliknya, itu memperkenalkan perintah baru sekarang).

8
vdboor

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 masuk ke daftar inode (blok yang dobel-kaitkan) dan ke-10 masuk 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 benar-benar menyimpan beberapa informasi header dengan file-file itu sendiri sehingga lebih mudah untuk mengidentifikasi file apa yang digunakan oleh sekumpulan blok (selama ruang tersebut 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.

4
djsumdog

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.

2
Deano

Jika Anda benar-benar menginginkan fitur undo, gunakan kontrol sumber. Subversion sebenarnya bekerja sangat baik pada satu mesin pengguna. Saya menggunakannya untuk mengontrol semua file pribadi saya di sistem rumah saya. Sepertinya berlebihan, sampai bencana, skrip nakal atau hit ketik baris perintah.

2

GitFS adalah sistem file berbasis Fuse, yang secara otomatis menghitung diffs antara versi dan memungkinkan memulihkan/menjelajahinya.

Halaman web: https://www.presslabs.com/gitfs

Documents: https://www.presslabs.com/gitfs/docs/usage/

1
test30