Apakah file dapat dipulihkan?
Jawaban singkat: Tidak biasanya.
@Mark Plotnick menunjukkan dalam komentar, Anda dapat memulihkan .py
file dari .pyc
menggunakan Uncompyle . Ini harus sempurna untuk situasi Anda.
Secara umum, ini jauh lebih sulit. Secara teoritis Anda dapat menggunakan alat forensik untuk membatalkan penghapusan file. Mungkin yang termudah yang saya gunakan adalah testdisk
(alias "PhotoRec"). Kadang-kadang hanya berfungsi dan ini adalah proses yang lambat. Biasanya tidak sepadan, jadi, ya, itu mungkin , tetapi jawaban sebenarnya adalah "tidak".
Dapatkah > diubah menjadi tidak menimpa executable?
Tidak. Tidak ada cara standar untuk memberitahu shell untuk tidak mengarahkan hanya untuk file yang ditandai dapat dieksekusi. Ada "noclobber" yang akan mencegah pengalihan ke file yang ada, dieksekusi atau tidak, tetapi lihat komentar saya di bawah ini.
Apa yang harus dilakukan di masa depan?
Ini mungkin terdengar konyol, tetapi untuk mencegah kesalahan di masa depan, Anda mungkin tidak perlu melakukan apa pun. Taruhan saya adalah bahwa Anda sudah mempelajari pelajaran ini.
Saya telah menggunakan dan mengajar Unix untuk waktu yang sangat lama dan sementara orang sering membuat kesalahan ini sekali, mereka jarang mengulanginya. Kenapa tidak? Mungkin karena alasan yang sama seseorang yang berpengalaman dengan pisau tidak memotong diri mereka sendiri: manusia pandai belajar. Akhirnya, melakukan hal yang benar menjadi kebiasaan.
Gunakan editor teks yang membuat cadangan untuk Anda. Misalnya, jika Anda menggunakan emacs
, versi program Anda sebelumnya disimpan di mac_ip.py ~. Editor lain dapat dikonfigurasikan untuk bekerja dengan cara yang sama (misalnya, "mengatur cadangan" di .nanorc
). Untuk editor yang tidak mendukung backup otomatis, Anda dapat membuat fungsi sederhana di .bashrc Anda:
myeditor() { cp -p "$1" "$1~"; editor "$1"; }
Buatlah mudah bagi Anda untuk membuat salinan. Misalnya, dalam direktori proyek yang sedang Anda kerjakan, Anda mungkin memiliki Makefile dengan target seperti ini:
# Use `make tar` to backup all files in this directory.
# Tar filename will be ../<currentdirectory>-<date>.tar.gz
DIRNAME = $(shell basename `pwd`)
TIMESTAMP = $(shell date +%s)
tar:
@echo "[Tarring up ${DIRNAME}.tar.gz]"
(cd .. ; tar -zcvf "${DIRNAME}-${TIMESTAMP}.tar.gz" "${DIRNAME}")
(Catatan: stackexchange salah menuliskan TAB di atas sebagai 4 spasi.)
Demikian pula, Anda bisa membuat target Makefile yang melakukan rsync
ke host Unix jarak jauh yang memiliki ssh
akses. (Gunakan ssh-copy-id
sehingga Anda tidak akan diminta kata sandi berulang kali.)
Gunakan git
. Ada banyak tutorial bagus untuk memulai. Coba man gittutorial
, man gittutorial-2
dan man giteveryday
. Menyiapkan repositori git Anda sendiri tidak sulit, tetapi Anda juga dapat membuat repositori jarak jauh tanpa biaya di github.com
Jika solusi di atas terlalu berat, Anda dapat menyimpan skrip kecil ke gist.github.com . Meskipun dimungkinkan untuk menempel atau mengunggah dari peramban web, saya sarankan menggunakan antarmuka inti baris perintah untuk menjadikannya super mudah.
Saya sangat tidak menyarankan menggunakan "noclobber".
Ya, jika Anda memilih, Anda bisa melakukannya set -o noclobber
sehingga Anda akan mendapatkan pesan kesalahan setiap kali Anda mencoba untuk menimpa file yang ada. Ini adalah ide yang buruk, menurut saya. *
Itu membuat shell bekerja dengan cara yang tidak standar tanpa indikasi yang terlihat apakah itu diaktifkan. Anda harus menggunakan sintaks yang berbeda untuk melakukan hal-hal normal. Yang terburuk, jika Anda terbiasa dengan noclobber, maka suatu hari nanti Anda akan menggunakan mesin Unix lain tanpa noclobber dan kecelakaan semacam ini mungkin terjadi lagi.
Seperti yang mungkin Anda ketahui, cangkang Unix dirancang untuk menjadi alat yang tajam bagi para ahli. Ini cepat digunakan dan tidak akan menghalangi Anda - dan itu akan memotong Anda jika Anda lupa ujung mana yang runcing. Tapi, semakin Anda menggunakannya, semakin saya pikir Anda akan menghargai bahwa itu bisa menjadi hal yang baik.
* Catatan Kaki: mungkin mengambil pendapat saya dengan sebutir garam. Saya juga tipe orang yang menganggap roda pelatihan sepeda adalah ide yang buruk.
set -o noglobber
dan bash tidak akan mengarahkan ulang ke file yang ada lagi. Lihat di sini untuk perincian: cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html