Làm thế nào để phục hồi crontab đã xóa


11

Tôi đã cố gắng chỉnh sửa crontab trong thiết bị đầu cuối, và tôi vô tình gõ crontab -rthay vì crontab -e. Ai sẽ ra lệnh nguy hiểm như vậy sẽ ngồi ngay bên cạnh bức thư để chỉnh sửa crontab? Hơn nữa, tôi vẫn đang cố gắng tìm hiểu làm thế nào để crontab -rkhông yêu cầu bạn xác nhận?

Bất kể sự thiếu tin cậy của tôi như thế nào là có thể, câu hỏi của tôi là: tôi có thể phục hồi được crontab đã mất không?


Chỉ cần thông tin, crontab -r sẽ xóa crontab mà không cần nhắc và crontab -i sẽ yêu cầu xác nhận.
Raman sailopal

@RamanSailopal cảm ơn bạn đã thông tin. điều đó thực sự nguy hiểm, với thực tế là -e và -r nằm cạnh nhau (ít nhất là trên qwerty) ...
Miguel Mesquita Alfaiate

1
Những thứ như thế này là một lý do tại sao tôi sử dụng etckeeper.
David Foerster

2
Khôi phục nó từ bản sao lưu
PiedPiper

@PiedPiper nếu tôi có bản sao lưu đó thì đây không phải là vấn đề. Tôi có các thư mục nhà đang được sao lưu, nhưng không phải crontab gốc này.
Miguel Mesquita Alfaiate

Câu trả lời:


7

Bạn có thể tìm thấy công việc định kỳ của mình từ nhật ký nếu một khi nó đã được thực hiện trước đó. Kiểm tra /var/log/cron.

Bạn không có bất kỳ tùy chọn khôi phục nào ngoài các công cụ khôi phục của bên thứ ba.


Bất kỳ gợi ý về cách tôi có thể kiểm tra tôi không thiếu thứ gì? Điều gì nếu có một số nhiệm vụ hàng tuần hoặc hàng tháng? Tôi có phải đi từng dòng cho đến đầu tháng trước để tìm hiểu xem tôi có chạy cronjob ít phổ biến hơn không?
Miguel Mesquita Alfaiate

Tôi nghĩ rằng bạn phải đi từng dòng trong một tháng qua. Xin lỗi
Cảnh sát trưởng Muhammed

Không cần "theo từng dòng". Sử dụng grepvới một trong hai -ohoặc được dẫn vào sed/ awk/ cut/ etc để chỉ trích xuất lệnh và sau đó được dẫn vào sort -u.
Patrick

3
Bạn vẫn sẽ cần phải đi từng người một để sắp xếp lịch trình nếu họ không chỉ đơn giản là hàng ngày hoặc hàng tuần. Một cái gì đó giống như awk '$5 ~ "^CROND" && $6 == "(username)" { print }' /var/log/cron | sort -t ' ' -k 8sẽ hiển thị các mục được usernamesắp xếp theo lệnh, điều này sẽ giúp dễ dàng xem các khoảng giữa chúng để bạn có thể tạo lại lịch trình của chúng.
James Sneeringer

@JamesSneeringer chắc chắn là phù thủy! giơ ngón tay cái lên cho điều đó!
Miguel Mesquita Alfaiate

2

Tôi không chắc chắn, có thể khôi phục crontabtập tin mà không cần sao lưu. Nhưng, tôi khá chắc chắn rằng bạn có thể khôi phục crontabtệp của bạn từ cronnhật ký. Theo tôi nhớ, nhanh chóng mọi lệnh được liệt kê ở đó với người dùng.


2

Nếu bạn nhớ một dòng cụ thể, bạn có thể grep toàn bộ thiết bị để tìm lại dữ liệu của mình, với điều kiện không có dữ liệu nào khác ghi đè lên nó. Điều này làm việc cho bất kỳ tập tin.

grep -a -B100 -A100 "command/you remember" /dev/sda1 > /tmp/cron.ressurected

Điều chỉnh -B (efor) và -A (fter) theo kích thước tệp của bạn, nhưng 100 dòng xung quanh là đủ cho một tệp cron. Tham số -a là cần thiết để buộc grep coi thiết bị của bạn là văn bản.

Sau đó, bạn sẽ phải dọn dẹp mớ hỗn độn nhị phân trước và sau dữ liệu của bạn trong tệp kết quả.

Và nó mất rất nhiều thời gian. Chúc may mắn.

Bạn cũng có thể tham khảo câu trả lời này: Phục hồi / khôi phục các tập tin đã xóa | Trao đổi ngăn xếp Unix & Linux

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.