Là tập tin có thể phục hồi?
Câu trả lời ngắn gọn: Không thường xuyên.
@Mark Plotnick chỉ ra trong các bình luận, bạn có thể khôi phục .py
các tệp từ .pyc
việc sử dụng Uncompyle . Điều này nên hoàn hảo cho tình huống của bạn.
Nói chung, mặc dù, điều này là khó khăn hơn nhiều. Về mặt lý thuyết bạn có thể sử dụng các công cụ pháp y để phục hồi các tập tin. Có lẽ cách dễ nhất tôi đã sử dụng là testdisk
(còn gọi là "PhotoRec"). Nó chỉ hoạt động đôi khi và nó là một quá trình chậm. Nó thường không có giá trị, vì vậy, vâng, điều đó là có thể , nhưng câu trả lời thực sự là "không".
Có thể > được thay đổi để không ghi đè thực thi?
Không. Không có cách tiêu chuẩn nào để báo cho shell không bao giờ chuyển hướng chỉ cho các tệp được đánh dấu thực thi. Có "noclobber" sẽ ngăn chuyển hướng vào các tệp hiện có, có thể thực thi được hay không, nhưng hãy xem nhận xét của tôi về điều đó bên dưới.
Làm gì trong tương lai?
Điều này nghe có vẻ ngớ ngẩn, nhưng để ngăn ngừa những sai lầm trong tương lai, có lẽ bạn không cần phải làm gì. Đặt cược của tôi là bạn đã học bài học này.
Tôi đã sử dụng và dạy Unix trong một thời gian rất dài và trong khi mọi người thường mắc lỗi này một lần, họ hiếm khi lặp lại. Tại sao không? Có khả năng vì cùng một lý do mà một người có kinh nghiệm với dao không tự cắt mình: con người học giỏi. Cuối cùng, làm điều đúng đắn trở thành bản chất thứ hai.
Sử dụng một trình soạn thảo văn bản để sao lưu cho bạn. Ví dụ: nếu bạn sử dụng emacs
, phiên bản trước của chương trình của bạn sẽ được lưu trong mac_ip.py ~. Các trình soạn thảo khác có thể được cấu hình để hoạt động tương tự (ví dụ: "thiết lập sao lưu" trong .nanorc
). Đối với các trình soạn thảo không hỗ trợ sao lưu tự động, bạn có thể tạo một hàm đơn giản trong .bashrc:
myeditor() { cp -p "$1" "$1~"; editor "$1"; }
Làm cho nó dễ dàng để làm cho bản sao. Ví dụ: trong thư mục của dự án bạn đang thực hiện, bạn có thể có một Makefile với mục tiêu như thế này:
# 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}")
(Lưu ý: stackexchange đang chuyển nhầm các TAB ở trên thành 4 khoảng trắng.)
Tương tự, bạn có thể tạo một mục tiêu Makefile thực hiện một rsync
máy chủ Unix từ xa mà bạn có ssh
quyền truy cập. (Sử dụng ssh-copy-id
để bạn sẽ không được hỏi mật khẩu nhiều lần.)
Sử dụng git
. Có rất nhiều hướng dẫn tuyệt vời về việc bắt đầu. Hãy thử man gittutorial
, man gittutorial-2
và man giteveryday
. Thiết lập kho lưu trữ git của riêng bạn không khó, nhưng bạn cũng có thể tạo một kho lưu trữ từ xa miễn phí tại github.com
Nếu các giải pháp trên quá nặng, bạn có thể lưu các tập lệnh nhỏ vào gist.github.com . Mặc dù có thể dán hoặc tải lên từ trình duyệt web, tôi khuyên bạn nên sử dụng giao diện chính của dòng lệnh để làm cho mọi thứ trở nên siêu dễ dàng.
Tôi đặc biệt không khuyến khích sử dụng "noclobber".
Có, nếu bạn chọn, bạn có thể làm set -o noclobber
như vậy, bạn sẽ nhận được thông báo lỗi bất cứ khi nào bạn cố ghi đè lên một tệp hiện có. Đây là một ý tưởng tồi, theo ý kiến của tôi. *
Nó làm cho shell hoạt động theo cách không chuẩn mà không có dấu hiệu rõ ràng cho dù nó được kích hoạt. Bạn phải sử dụng một cú pháp khác nhau để làm những việc bình thường. Tệ nhất là, nếu bạn đã quen với noclobber, thì một ngày nào đó bạn sẽ sử dụng một máy Unix khác mà không cần noclobber và loại tai nạn này có thể xảy ra lần nữa.
Như bạn có thể biết, shell Unix được thiết kế để trở thành một công cụ sắc bén cho các chuyên gia. Nó rất nhanh để sử dụng và sẽ không cản trở bạn - và nó sẽ cắt bạn nếu bạn quên kết thúc nào là nhọn. Nhưng, bạn càng sử dụng nó, tôi càng nghĩ rằng bạn sẽ đánh giá cao điều đó có thể là một điều tốt.
* Chú thích: có thể lấy ý kiến của tôi với một hạt muối. Tôi cũng là kiểu người nghĩ rằng bánh xe đạp xe đạp là một ý tưởng tồi.
set -o noglobber
và bash sẽ không chuyển hướng vào các tệp hiện có nữa. Xem tại đây để biết chi tiết: cyberciti.biz/tips/howto-keep-file-safe-from-over